0

Web アプリケーションを websphere 環境から tomcat7 & Axis2 に移行しています。問題を引き起こしている Web サービスが多数あります。

Web サービスは、Eclipse (Juno) の Web サービス ウィザードを使用して Java クラスから作成されます。適切なフォルダーが WEB-INF/services の下に作成され、アプリケーションはサービスを呼び出すことができます。単純なオブジェクト (String、int など) を返すサービスは問題なく動作します。カスタム オブジェクト (Customer、Country など) を返すサービスは、次を含むエラー応答を生成します。

<faultcode>soapenv:Server</faultcode>
<faultstring>java.lang.reflect.InvocationTargetException</faultstring>
<detail/>

カスタム オブジェクトはシリアライズ可能で、public null コンストラクターを持ちます。テストと同じように、戻り値の型を String に変更し、戻り値に toString() を追加しました-うまくいきました。

この問題の原因は何ですか?

4

2 に答える 2

1

Axis2 についてはわかりませんが、おそらく似たようなものですが、このような問題をデバッグするために、Axis で LogHandler を WSDD ファイルに追加します。このようにして、これを引き起こした例外が表示されます。Tomcat については、Tomcat/Axis Web サービスの SOAP メッセージをログに記録する方法を参照してください。

Axis2 の場合、単純なモジュールを作成する必要があります。 「独自の Axis2 モジュールの作成」を参照してください。

于 2012-11-12T11:14:21.440 に答える
0

Axis2 からログを取得するために、log4j.xml に以下を追加することができました。

<category name="org.apache.axis2" additivity="false">
    <priority value="trace"/>
    <appender-ref ref="roller"/>
    <appender-ref ref="console"/>
</category>

その後、 InvocationTargetExceptionの根本的な原因が、私のクラスの 1 つで NullPointerException であることがわかりました。Axis2 は Axis1 よりもそのようなことに敏感なようです。

于 2012-11-12T13:14:23.663 に答える