[Seasar-user:22003] Re: eclipseからのTomcat起動とコマンドからの起動時の差異について

OOISHI, MASANORI [E-MAIL ADDRESS DELETED]
2014年 11月 21日 (金) 08:11:13 JST


大石です。

今田さん、回答ありがとうございます。
下記の回答がビンゴでした。
いくつかのupdateメソッドがあり連番で番号を終わりに付けていました。
番号をアルファベットに変えたところエラーメッセージが表示されなくなりました。

下記に書かれていますように
今後は「Daoインタフェースのメソッド名の最後は数字にしない」にいたします。

ありがとうございました。

-----Original Message-----
From: seasar-user-bounces @ ml.seasar.org [mailto:seasar-user-bounces @ ml.seasar.org] On Behalf Of 今田 昇
Sent: Thursday, November 20, 2014 2:52 PM
To: 'seasar-user @ ml.seasar.org'
Subject: [Seasar-user:22002] Re: eclipseからのTomcat起動とコマンドからの起動時の差異について

大石さん

こんにちは、今田と申します。
<<https://ml.seasar.org/archives/seasar-user/2014-July/021929.html>>

の事象と状況が似ています。

TestBasicTblDao.javaに、
updateメソッドと
update2メソッドがありませんか?

だとすると、

update2メソッドに付与されたAOPのクラス名の最後が
$$update20
(update2 + 連番0)
となり、
updateメソッドに付与されたAOPのクラス名の最後が
$$update20
(update + 連番20)
とたまたま実行時になってしまい、
たまたま、クラス名が重複してしまった可能性が高いです。
クラス名が重複しているからだめだよ・・・とクラスローダーが文句を言っているのです。

Daoインタフェースの各メソッドがどのような順番でAOPのクラス名が付与されるかは保証されないので、
実行環境や、タイミングによって、たまたま重複してしまうことがあります。

Seasar2フレームワークに手をいれない、
てっとりばやい回避策は、
Daoインタフェースのメソッド名の最後は数字にしないという方法です。

ちなみに、
Seasar2のバージョンは、1.0.43になります。
とおっしゃっているのは、
S2Daoのバージョンだと思います。
Seasar2のバージョンはまた別にあるはずです。

-----Original Message-----
From: seasar-user-bounces @ ml.seasar.org [mailto:seasar-user-bounces @ ml.seasar.org] On Behalf Of OOISHI, MASANORI
Sent: Wednesday, November 19, 2014 5:49 PM
To: seasar-user @ ml.seasar.org
Subject: [Seasar-user:21999] eclipseからのTomcat起動とコマンドからの起動時の差異について

大石と申します。
いつもお世話になっております。

TomcatでSeasar2を利用しています。
Seasar2のバージョンは、1.0.43になります。
EclipseからTomcatを起動する際には、エラーが出ませんが
Tomcatをコマンドプロンプトから起動する際には、コンポーネントの定義で
エラーが発生します。

下記がそのエラーメッセージになります。

2014-11-19 07:44:03,562 [main] ERROR org.apache.catalina.core.ContainerBase.[Cat
alina].[localhost].[/avpdd2] - StandardWrapper.Throwable
org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]java.
lang.ClassLoaderが呼び出した対象が不正です。理由はjava.lang.LinkageError: loader  (instance of  org/apache/catalina/loader/WebappClassLoader): attempted  duplica te class definition for name: "avpdd2/dao/TestBasicTblDao$$EnhancedByS2AOP$$9529
05$$MethodInvocation$$update20"

Daoクラスのところでエラーが出ているのはわかるのですが
対策方法がわかりません。

どのようにしたらいいのでしょうか?

以上、よろしくお願いいたします。

_______________________________________________
Seasar-user mailing list
Seasar-user @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/seasar-user
_______________________________________________
Seasar-user mailing list
Seasar-user @ ml.seasar.org
https://ml.seasar.org/mailman/listinfo/seasar-user


Seasar-user メーリングリストの案内