0

要件

  1. wsdl を持つ Web サービスを呼び出す必要があり、ブラウザーからは開かない。
    ダミーのエンドポイントが指定された wsdl ドキュメントがあります。
    スタブ クラスなどが生成されたら、実行時にエンド ポイントを変更する必要があります。

  2. SOAP メッセージにヘッダーを追加するサードパーティ メソッドを呼び出す必要があります。このメソッドは SOAP メッセージのみを受け入れます。このメソッドは、フローに追加する必要がある SoapHandler から呼び出す必要があります。

私は次のすべてを試しました

Axis 2
このサービスは Axis2 でうまく動作しますが、ハンドラー内の AxisMesage にしかアクセスできず、SOAP メッセージにはアクセスできないため、サードパーティのメソッドを呼び出すことができず、失敗します。

Axis 1.4 サービスはうまく機能し、サードパーティ メソッドの呼び出しに使用できる SOAP メッセージにアクセスできます。

Apache CXF、JAX-WS など
wsdl が利用できないため、新しい wsdl エンドポイントでサービス クラスを初期化するか、bindingProvider を介してエンドポイントを設定すると、サービスを呼び出すことができない例外がスローされます。

質問
Axis 1.4 は古いので、近づかないという意見が一般的です。

Axis 2 は、AxisMessage の問題を除けば問題ありません。Axis に追加したハンドラーで SoapMessage にアクセスする方法はありますか。追加できるハンドラーは Axis2 ハンドラーのみです

CXF と JAX-WS では、 SoapMessage を持つジェネリック ハンドラーを追加できますが、サービス クラスが初期化されるか、BindingProvider で設定されると失敗します。

任意の提案
感謝
チャーリー

4

1 に答える 1

0

Axis2 では、AxisMessage は現在のメッセージを表していません。代わりにwsdl:message要素を表します。つまり、サービス記述の一部です。SOAP メッセージを取得するには、SOAPEnvelopeからを取得しますMessageContext

于 2012-05-24T18:37:57.107 に答える