2

WebSphereで動作するCXFを使用してApacheCamelアプリを取得しようとしています。

いくつかのエラーに気づきました

原因:java.lang。IncompatibleClassChangeError:org.apache.neethi.AssertionBuilderFactory at java.lang.ClassLoader.defineClassImpl(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:262)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69 )。

これは、org.apache.neethiクラスがWEB-INF / libのneeti3.0.2.jarではなく、WASランタイムからロードされるために発生します。

これがクラスローダーからの情報です:

クラスのロード:org.apache.neethi.builders.AssertionBuilder from:ファイル:/D: /Tools/WebSphere/AppServer/plugins/org.apache.axis2.jar

Webアプリケーションの構成は、クラスローダーポリシーを使用するように変更されました。ParentLastに設定されています。しかし、このクラスは親優先ポリシーを使用しているようです。

このポリシーを上書きするCXFパッケージに何かありますか?

Axis2とWASを使用していることに気づきました

http://axis.apache.org/axis2/java/core/docs/app_server.html

WebSphereのJAX-WSランタイムとの競合を回避するために、Axis2について言及されているいくつかの追加のステップがあります。これを機能させるために必要な類似のものはありますか?

ありがとうManglu

4

2 に答える 2

3

Camel に固有のものではありませんが、同様の問題に取り組んでいます。

1) 必要に応じて、分離された共有ライブラリを使用できます。これにより、クラスローダが OSGi を介してこれらの他のライブラリを取り込まないように修正されたようです。このソリューションは万人向けではありません。

2) アプリを PARENT_LAST に設定するときは、正しい場所で行っていることを確認してください。war 内に jar がある場合は、アプリケーションではなく、 WAR モジュールにPARENT_LAST を設定する必要があります。WAS コンソール > アプリケーション > アプリケーション タイプ > websphere エンタープライズ アプリケーション > MyEAR > モジュールの管理 > MyWar > 「クラス ローダーの順序」を変更し、「親が最後」にします。

3) 変更を行った後、ear ファイルをエクスポートできます。ear には、この構成を持つファイル META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml があります。Maven ear の場合、これを src/main/application に配置して、ear と一緒にパッケージ化できます。

これが役立つことを願っています。幸運を。

于 2013-02-08T17:20:36.133 に答える
2

Camelメーリングリストで同様のトピックについて議論しています. そこで見てみることをお勧めします。

于 2013-01-30T07:20:22.487 に答える