2

私は、生物学的視覚化ソフトウェア プラットフォームである Cytoscape のプラグインを Cytoscape API の最新バージョンに更新する任務を負っています。Cytoscape 3.x は OSGI フレームワーク (Karaf 2.2.x だと思います) を使用してプラグイン (現在は「アプリ」と呼ばれています) とやり取りします。

プラグイン/アプリは、実際には JAX-WS を使用して外部サーバーと通信するクライアントです。しかし、何らかの理由で、エラー メッセージがないにもかかわらず、取得している SOAP メッセージの非整列化に失敗します。目的のオブジェクトはデフォルトのコンストラクターで作成されますが、それらのフィールドは空のままです。

XMLがサーバーから完全に到着することを確認できます。この同じコードが OSGI 以外の環境でも機能することも確認できます。さらに、jaxb.debugOSGI バージョンと非 OSGI バージョンの両方で JVM オプションを有効にすると、どちらの場合も JAXB が舞台裏でまったく同じことを行っているように見えることがわかります。

だから、私はここで何が起こっているのか分かりません。何か案は?

アップデート:

さらに調査した結果、この問題は JAX-WS とは直接関係がない可能性があると判断しました。Web サービスから到着した SOAP メッセージを XML ファイルとしてハード ドライブに保存しました。Web サービスにまったく触れずに直接アンマーシャリングしようとすると、次のようになりました。

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: javax.xml.stream.XMLInputFactory.newFactory()Ljavax/xml/stream/XMLInputFactory;

繰り返しになりますが、この同じコードはスタンドアロンの非 OSGI 環境で正常に動作します。非常に奇妙な。

4

2 に答える 2

0

jdk の組み込み jaxws サポートは、OSGi と互換性がありません。

karaf に Apache CXF をインストールしてみてください。そのためのカラフ機能があります。そのため、インストールは非常に簡単です。http://liquid-reality.de/display/liquid/2011/12/22/Karaf+Tutorial+Part+4+-+CXF+Services+in+OSGiを参照してください。

于 2014-02-13T08:49:33.097 に答える