1

WebMethods 内で Java サービスとして動作する Axis2 ベースの ws コンシューマを取得する必要があるシナリオに陥りました。ws コンシューマーを最初に netbeans に実装して、それが機能するかどうかを確認したので、必要な jar の最小量は次のとおりであることがわかりました。

[ xmlschema-1.4.7.jar, apache-mime4j-core-0.7.2.jar, axiom-api-1.2.13.jar, axiom-impl-1.2.13.jar, axis2-adb-1.6.2.jar 、axis2-kernel-1.6.2.jar、axis2-transport-http-1.6.2.jar、axis2-transport-local-1.6.2.jar、commons-codec-1.3.jar、commons-httpclient-3.1.jar 、commons-logging-1.1.1.jar、httpcore-4.0.jar、mail-1.4.jar、neethi-3.0.2.jar、wsdl4j-1.6.2.jar]

これらの jar ファイルを IS/packages/{package_name}/code/jars フォルダーにアップロードしました。リクエストを送信してレスポンスを処理するJavaサービスを実行しようとすると、次の例外が発生します。

java.lang.reflect.InvocationTargetException: org.apache.axiom.om.OMFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory;

IS エラー ログ ファイルから、実際のエラー メッセージは次のようになっていることがわかりました。

org.apache.axiom.om.OMFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory; 原因: java.lang.reflect.InvocationTargetException: null 原因: java.lang.NoSuchMethodError:org.apache.axiom.om.OMFactory.getMetaFactory()Lorg/apache/axiom/om/OMMetaFactory;

プラットフォームは Linux 環境の WebMethods 8.2 です。JDK バージョンは 1.6.0_32 で、WebMethods の下のアプリケーション サーバーは Jetty です。

4

1 に答える 1

1

実際、この問題の解決はもう少しトリッキーでした。最初に、IS サーバー上のパッケージのマニフェスト ファイルを、パッケージ abnd で提供される jar を使用するように手動で構成する必要があったため、IS 自体が使用する Axis と競合することはありません。一方、WebMethods は jar ファイルの META-INF ベースの情報を使用できないため、ClassLoader を手動で追加する必要がありました。この問題を解決するには、次を使用します。

System.setProperty("org.apache.axiom.om.OMMetaFactory", "org.apache.axiom.om.impl.llom.factory.OMLinkedListMetaFactory");

それはすべての問題を解決します。

于 2014-01-27T09:11:22.737 に答える