Cosminexus アプリケーションサーバ V8 Webサービス開発の手引
Webサービスクライアント側でハンドラチェインを設定する場合,JAX-WS APIを使用します。
ハンドラチェインを設定するコードを追加したWebサービスクライアントの例を示します。
package com.example.sample.client;
import com.example.sample.TestJaxWs;
import com.example.sample.TestJaxWsService;
import com.example.sample.UserDefinedException;
public class TestClient {
public static void main( String[] args ) {
try {
TestJaxWsService service = new TestJaxWsService();
//ハンドラリゾルバを生成してサービスクラスに設定
SampleHandlerResolver handlerResolver = new SampleHandlerResolver();
service.setHandlerResolver( handlerResolver );
TestJaxWs port = service.getTestJaxWs();
String returnValue = port.jaxWsTest1( "Invocation test.", 1003 );
System.out.println( "[RESULT] " + returnValue );
}
catch( UserDefinedException e ){
e.printStackTrace();
}
}
}
|
ハンドラリゾルバの例を示します。
package com.example.sample.client;
import java.util.ArrayList;
import java.util.List;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.handler.PortInfo;
import javax.xml.ws.soap.SOAPBinding;
public class SampleHandlerResolver implements HandlerResolver{
//このハンドラリゾルバで保持するハンドラチェイン
private List<Handler> handlerChain = new ArrayList<Handler>();
//都合のよい方法でハンドラチェインにハンドラを追加しておく
//ここではコンストラクタで追加する
public SampleHandlerResolver(){
this.handlerChain.add( new SomeHandler() );
}
//ハンドラチェインを返す
public List<Handler> getHandlerChain( PortInfo portInfo ){
//portInfoオブジェクトの内容を調べ
//このハンドラリゾルバで処理可能であればハンドラチェインを返す
if( portInfo.getBindingID().equals( SOAPBinding.SOAP11HTTP_BINDING )
&& portInfo.getPortName().equals( ... )
&& portInfo.getServiceName().equals( ... ) ){
return this.handlerChain;
}
else{
...
}
}
}
|
javax.xml.ws.Service#setHandlerResolverメソッドで設定されたハンドラリゾルバへの変更は,それ以前に同じServiceオブジェクトから取得されたポートのハンドラチェインには影響しません。
使用できるJAX-WS APIについては,「15. JAX-WS APIのサポート範囲」を参照してください。
SOAPロールおよびアクタの設定を省略した場合,または空文字を指定した場合は,デフォルトの値が設定されます。デフォルトの値は,SOAP 1.1仕様のSOAPメッセージの場合は"http://schemas.xmlsoap.org/soap/actor/next",SOAP 1.2仕様のSOAPメッセージの場合は"http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"です。
soap:mustUnderstand属性には,"0","1","true",または"false"を設定してください。それ以外の値を設定した場合は,"0"または"false"が設定されているものと見なされます。
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.