アウトバウンド・メッセージで設定された SOAP アクションでの振る舞いの変更を確認する

WebSphere Application Server V8 では、SOAP アクション設定が JAX-WS Dispatch クライアントに対するアウトバウンド・メッセージでどのように決定されるかについて振る舞いが変更されました。 V8 より前のリリースでは、SOAP アクションが Dispatch クライアント・アプリケーションによって提供されていない場合、JAX-WS ランタイム環境ではアウトバウンド・メッセージで正しい SOAP アクションが送信されません。代わりに、アクションが匿名操作に設定されます。 V8 では現在、SOAP アクションがクライアント・アプリケーションによって提供されていない場合、JAX-WS ランタイム環境によって出力メッセージが構文解析されて、起動される操作が決定され、それによって SOAP アクションの適切な値が決定されるようになっています。

この規則により、以下の条件が該当すると、Dispatch クライアントを作成するための呼び出しにフラグを立てます。

WebSphere Application Server traditional のベスト・コーディング・プラクティスおよび Liberty は、クライアント・アプリケーションが JAX-WS で SOAP アクションを提供するためのものです。 javax.xml.ws.BindingProvider プロパティー SOAPACTION_USE_PROPERTY および SOAPACTION_URI_PROPERTY 。 指定された SOAP アクションが使用され、以下の設定に関係なく、アウトバウンド・メッセージの構文解析は行われません。 DISPATCH_CLIENT_OUTBOUND_RESOLUTION 記録を始めました。

以下の例では、要求コンテキストで SOAP アクションが設定されているベスト・プラクティスのコードを示しています。 If the SOAPACTION_URI_PROPERTY が設定されていない場合、または SOAPACTION_USE_PROPERTY 設定される値 false に対する呼び出しは、 createDispatch() この規則によってメソッドにフラグが立てられます。

例:

//Create a dispatch instance
< span class= "indent2"> < /span> ディスパッチ < SOAPMessage> ディスパッチ =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

// Use Dispatch as BindingProvider
BindingProvider bp = (BindingProvider) dispatch;

// Configure RequestContext to send SOAPAction HTTP Header
Map < String, Object> rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello");

この構文解析にはコストがかかる場合があるので、プロパティーを WebSphere Application Server traditional 上でシステム・レベルで設定するか(構文解析を常に使用不可にする場合)、JAX-WS 要求メッセージ・コンテキストで設定することができます (構文解析をメッセージ単位で使用不可にする場合)。 構文解析が使用不可になっている場合、アウトバウンド・メッセージの SOAP アクションは、引き続き従来どおり匿名操作に設定されます。 無効化プロパティーは定数として定義されています org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION 以下のストリング値を使用 jaxws.dispatch.outbound.operation.resolution.enable プロパティーが設定されていない場合は、ストリングとして解釈されます。 true 、アウトバウンド操作解決を使用可能にします。 プロパティーを次のように設定します。 false アウトバウンド操作解決を使用不可にします。

追加情報については、以下を参照してください。