主な顧客向けアプリケーションとバックエンド Web サービスとの間のインターフェースとなる、多数の Web サービス クライアント アプリケーションがあります。これらの Web サービス アプリケーションは、独自の JAXWS スタブ コードを生成して、Web サービスおよび実装コードと直接やり取りし、JAXWS コードとそれを使用する任意のアプリケーションとの間のクリーンなインターフェイスを提供します。ここ数週間、これらに関していくつかの小さな問題がありましたが、それらのほとんどは解決されました。
これらを顧客向けアプリケーションに統合する段階になったとき、主に JDK1.5 と 1.6 の非互換性に焦点を当てた多数の問題に遭遇しました。これらは現在解決されていますが、解決策のない別の問題が発生しています。Web サービス クライアントは AOP を使用して、ヘッダー資格情報、例外処理、スロットリングなどの一般的な設定を行います。
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* MyService.*(..))" />
<aop:aspect id="throttling" ref="throttlingAdvisor">
<aop:around pointcut-ref="pointcut" method="doThrottle" />
</aop:aspect>
<aop:aspect id="errorHandling" ref="errorHandlingAdvisor">
<aop:around pointcut-ref="pointcut" method="handleExceptions" />
各アスペクトは POJO Bean を参照します。これらの Bean には、org.aspectj.lang.ProceedingJoinPoint のメソッド パラメータ タイプを使用して構成に記述されたメソッドが含まれます。これは、インターセプトしているメソッドの引数を抽出するために使用されます。
これらは、Web サービス クライアントごとに 1 つずつあります (applicationContext-webservicename.xml 内)。この xml ファイルは、パッケージ化された JAR に含まれています。この JAR は顧客向けアプリケーションに含まれ、顧客向けアプリケーションの web.xml によってロードされるメインの applicationContext.xml にインポートされます。
これらの Web クライアントには多数の単体テストがあり、すべて合格しており、個別に問題がないことを証明しています。すべてのサービスが顧客向けアプリケーションに含まれている場合、起動時に java.lang.NoClassDefFoundError: ProceedingJoinPoint 例外が発生します (JDK1.5.0_17 で tomcat 5.5 を使用しています)。
特別な意味がある場合に備えて、java.lang.NoClassDefFoundError の JavaDoc を調べました。JVM がクラスが存在しないと考えているようです。次に、見つからないと主張しているクラス(aspectjrt-1.5.4.jarおよびaspectjweaver-1.5.4.jar)を含むjarを探しました。これらのクラスの重複があるため、各jarを順番に削除して確認しましたまったく同じエラーが発生します。
必要な依存関係がありませんか? この問題の一般的な原因はありますか (昨日これを検索しましたが、あまり見つかりませんでした)。どんな助けでも大歓迎です。