Interstage Application Server SOAPサービス ユーザーズガイド
目次 索引 前ページ次ページ

第5章 RPC方式のアプリケーションの実装> 5.4 スタブ方式によるRPCクライアントアプリケーション

5.4.2 プロキシ、認証などのHTTP接続情報の追加(スタブ方式)

 スタブを使用するRPCクライアントアプリケーションで追加のHTTP接続情報を設定する方法について以下に説明します。

■接続先URLを指定する方法

 スタブは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サービスのユーザ名/パスワードを設定する方法

 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分)が適用されます。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005