Interstage Application Server SOAPサービス ユーザーズガイド |
目次 索引 |
第5章 RPC方式のアプリケーションの実装 | > 5.4 スタブ方式によるRPCクライアントアプリケーション |
スタブを使用するRPCクライアントアプリケーションで追加のHTTP接続情報を設定する方法について以下に説明します。
スタブはWSDLで定義されたデフォルトの接続先URLに対してリモート呼び出しを行います。明示的に接続先URLを指定したい場合は、以下に示す方法で指定します。
import javax.xml.rpc.Stub; ..... ServiceFactory factory = ServiceFactory.newInstance(); IntSampleServiceLocator locator = (IntSampleServiceLocator) factory.createService(serviceQName); // 標準の接続先URLを使用する場合 IntSample target = locator.getIntSamplePort(); // 接続先URLを指定したい場合 IntSample target = locator.getIntSamplePort( new java.net.URL("http://otherhost/anywhere/")); ..... // さらに接続先URLを変更したい場合 ((Stub)target)._setProperty( "javax.xml.rpc.service.endpoint.address", "http://anotherhost:8080/somewhere/"); ..... |
ロケータオブジェクトからスタブオブジェクトを取得するメソッド(例ではgetIntSamplePortメソッド)をパラメタなしで呼び出すと、WSDLで定義された接続先URLを使用し、パラメタとして接続先URL(java.net.URLオブジェクト)を指定して呼び出すと指定された接続先URLへ接続するスタブオブジェクトを取得できます。
一度取得したスタブオブジェクトに対して接続先URLを設定したい場合は、javax.xml.rpc.Stubインタフェースの_setPropertyメソッドを使用して、プロパティとして接続先URLを設定します。
接続先URLに関するプロパティは以下のとおりです。
キー |
値(java.lang.String) |
---|---|
javax.xml.rpc.service.endpoint.address |
接続先のURL |
プロキシ接続を使用する場合は、スタブオブジェクトに対してプロパティとしてプロキシ情報を設定します。
import javax.xml.rpc.Stub; ..... ServiceFactory factory = ServiceFactory.newInstance(); IntSampleServiceLocator locator = (IntSampleServiceLocator) factory.createService(serviceQName); IntSample target = locator.getIntSamplePort(); // プロキシ情報を設定する場合 ((Stub)target)._setProperty( "com.fujitsu.interstage.soapx.proxy.use", "true"); // ホスト名 ((Stub)target)._setProperty( "com.fujitsu.interstage.soapx.proxy.host", "myProxyHost"); // ポート番号 ((Stub)target)._setProperty( "com.fujitsu.interstage.soapx.proxy.port", "8080"); // ユーザ名 ((Stub)target)._setProperty( "com.fujitsu.interstage.soapx.proxy.user", "suzuki"); // パスワード ((Stub)target)._setProperty( "com.fujitsu.interstage.soapx.proxy.passwd", "taro"); ..... |
プロキシに関する情報は以下のとおりです。
キー |
値(java.lang.String) |
備考 |
---|---|---|
com.fujitsu.interstage.soapx.proxy.use |
"true" / "false" |
プロキシを介する通信の場合に"true"を指定してください。 |
com.fujitsu.interstage.soapx.proxy.host |
ホスト名 |
|
com.fujitsu.interstage.soapx.proxy.port |
ポート番号 |
|
com.fujitsu.interstage.soapx.proxy.user |
ユーザ名 |
プロキシがベーシック認証を行っている場合に必要です。 |
com.fujitsu.interstage.soapx.proxy.passwd |
パスワード |
プロキシがベーシック認証を行っている場合に必要です。 |
Webサービスでベーシック認証を行っている場合、またはSOAPメッセージに対するユーザ認証を行っている場合は、スタブオブジェクトに対してプロパティとして認証情報を設定します。
SOAPメッセージに対するユーザ認証については、“セキュリティシステム運用ガイド”の“ユーザ認証、SOAP電子署名、XML暗号を使用する方法”の“SOAPメッセージに対するユーザ認証の設定”を参照してください。
import javax.xml.rpc.Stub; ..... ServiceFactory factory = ServiceFactory.newInstance(); IntSampleServiceLocator locator = (IntSampleServiceLocator) factory.createService(serviceQName); IntSample target = locator.getIntSamplePort(); // ベーシック認証情報を設定する場合 // ユーザ名 ((Stub)target)._setProperty( "javax.xml.rpc.security.auth.username", "suzuki"); // パスワード ((Stub)target)._setProperty( "javax.xml.rpc.security.auth.password", "taro"); ..... |
Webサービスのユーザ名/パスワードに関するプロパティは以下のとおりです。
キー |
値(java.lang.String) |
---|---|
javax.xml.rpc.security.auth.username |
ユーザ名 |
javax.xml.rpc.security.auth.password |
パスワード |
接続先から応答がない場合に接続を切断するタイムアウト時間を指定する場合は、スタブオブジェクトに対してプロパティとしてタイムアウト時間をミリ秒で設定します。
import javax.xml.rpc.Stub; ..... ServiceFactory factory = ServiceFactory.newInstance(); IntSampleServiceLocator locator = (IntSampleServiceLocator) factory.createService(serviceQName); IntSample target = locator.getIntSamplePort(); // タイムアウト時間を指定する場合(15分) ((Stub)target)._setProperty("com.fujitsu.interstage.soapx.socket.timeout", new Integer(15*60*1000) ); ..... |
タイムアウト時間に関するプロパティは以下のとおりです。
キー |
値(java.lang.Integer) |
---|---|
com.fujitsu.interstage.soapx.socket.timeout |
タイムアウト時間(ミリ秒) |
上記の方法でタイムアウト時間を設定しなかった場合には、デフォルトのタイムアウト時間(5分)が適用されます。
目次 索引 |