10.10 プロキシサーバ経由の接続

Webサービスクライアントからプロキシサーバを経由して,外部のネットワークにあるWebサービスを利用できます。

ここでは,プロキシサーバを経由して外部に接続する場合に必要なプロパティの設定について説明します。

<この節の構成>
(1) プロパティ値の指定
(2) プロパティの設定方法
(3) JAX-WS機能固有のプロパティを利用しない場合
(4) JAX-WS機能固有のプロパティを利用する場合の注意事項

(1) プロパティ値の指定

プロキシサーバを経由してWebサービスにアクセスするには,JavaVMのプロパティ,またはApplication ServerのJAX-WS機能固有のプロパティを指定して,プロキシサーバの情報を設定します。プロキシサーバ経由で接続するためのプロパティと指定内容を次の表に示します。

表10-14 プロキシサーバ経由で接続するためのプロパティ

項番プロパティ指定内容非SSLの場合SSLの場合
1http.proxyHost※1プロキシサーバのホスト名またはIPアドレスを指定します。
空文字を指定した場合は,プロキシサーバに接続されません。
×
2http.proxyPort※1プロキシサーバのポート番号を設定します。
http.proxyHostが適切に設定されていた場合に,http.proxyPortに空文字を指定したときは,http.proxyHostに指定されているホストの80番ポートにアクセスされます。
http.proxyHostを指定していない場合は,http.proxyPortを指定しても,プロキシサーバに接続されません。
×
3com.cosminexus.jaxws.http.proxyUser※2プロキシサーバの認証ユーザIDを設定します。
http.proxyHostプロパティ,およびhttp.proxyPortプロパティが適切に設定されていた場合に,com.cosminexus.jaxws.http.proxyUserプロパティに空文字を指定したときは,匿名でプロキシサーバに接続します。
×
4com.cosminexus.jaxws.http.proxyPassword※2プロキシサーバの認証ユーザIDに対応するパスワードを設定します。
次のプロパティが適切に設定されていた場合に,com.cosminexus.jaxws.http.proxyPasswordプロパティに空文字を指定したときは,パスワードを設定しないでプロキシサーバに接続します。
  • http.proxyHost
  • http.proxyPort
  • com.cosminexus.jaxws.http.proxyUser
×
5https.proxyHost※1SSLプロトコルによる接続※3で使用するプロキシサーバのホスト名かIPアドレスを設定します。
SSLプロトコルによる接続でプロキシサーバを使用する場合は,必ず設定してください。なお,空文字を指定した場合は,プロキシサーバに接続されません。
×
6https.proxyPort※1SSLプロトコルによる接続※3で使用するプロキシサーバのポート番号を設定します。なお,https.proxyHostが適切に設定されていた場合に,https.proxyPortに空文字を指定したときは,https.proxyHostに指定されているホストの443番ポートにアクセスされます。
https.proxyHostを指定していない場合は,https.proxyPortを設定しても,プロキシサーバに接続されません。
×
7com.cosminexus.jaxws.https.proxyUser※2SSLプロトコルによる接続※3で使用するプロキシサーバの認証ユーザIDを設定します。
https.proxyHostプロパティ,およびhttps.proxyPortプロパティが適切に設定されていた場合に,com.cosminexus.jaxws.https.proxyUserプロパティに空文字を指定したときは,匿名でプロキシサーバに接続します。
×
8com.cosminexus.jaxws.https.proxyPassword※2SSLプロトコルによる接続※3で使用するプロキシサーバの認証ユーザIDに対応するパスワードを設定します。
次のプロパティが適切に設定されていた場合に,com.cosminexus.jaxws.https.proxyPasswordプロパティに空文字を指定したときは,パスワードを設定しないでプロキシサーバに接続します。
  • https.proxyHost
  • https.proxyPort
  • com.cosminexus.jaxws.https.proxyUser
×
9http.nonProxyHosts※1プロキシサーバを利用しないホスト名群を必要に応じて指定します。
このプロパティで指定したホストに接続する場合は,http.proxyHostまたはhttps.proxyHostに指定したプロキシサーバは経由されません。ホストを複数指定する場合は,「|」で区切って設定します。ホスト名とホスト名の間には,「|」以外の文字(空白など)は指定できません。
(凡例)
○:プロパティの指定が必須であることを示します。
△:必要に応じてプロパティを指定することを示します。
×:プロパティの指定が不要であることを示します。
注※1
JavaVMで標準でサポートされているシステムプロパティです。JavaVMのシステムプロパティについては,JavaVMのドキュメントを参照してください。
注※2
Application ServerのJAX-WS機能固有のプロパティです。このプロパティは簡易的なプロパティです。細かな制御をしたい場合,WebサービスクライアントでJ2SE 6.0標準のjava.net.Authenticatorクラスを利用した実装をすることをお勧めします。詳細については,「10.10(3) JAX-WS機能固有のプロパティを利用しない場合」を参照してください。
注※3
SSLプロトコルによる接続については,「10.11 SSLプロトコルによる接続」を参照してください。

(2) プロパティの設定方法

Application ServerのJAX-WS機能固有のプロパティは,動作定義ファイルに設定します。動作定義ファイルの設定方法については「10.1 動作定義ファイル」を参照してください。JAX-WS機能固有のプロパティを利用する場合,「10.10(4) JAX-WS機能固有のプロパティを利用する場合の注意事項」の内容に注意してください。

JavaVMのシステムプロパティの設定方法は,Webサービスクライアントの実行形態によって異なります。

プロパティの設定例を示します。

http.proxyHost=10.209.15.79
http.proxyPort=3128
https.proxyHost=10.209.15.79
https.proxyPort=3128
http.nonProxyHosts=10.209.15.80|www.xxx.co.jp

プロパティの設定を追加する位置についての決まりはありません。

(3) JAX-WS機能固有のプロパティを利用しない場合

JAX-WS機能固有のプロパティは簡易的なプロパティです。そのため,細かな制御をしたい場合,WebサービスクライアントでJ2SE 6.0標準のjava.net.Authenticatorクラスを利用した実装をすることをお勧めします。詳細についてはJ2SE 6のドキュメントを参照してください。java.net.Authenticatorクラスを利用した実装例を次に示します。

java.net.Authenticator.setDefault( new java.net.Authenticator(){

 // getPasswordAuthenticationメソッドをオーバーライドする
 public java.net.PasswordAuthentication getPasswordAuthentication() {

   // ユーザ名を設定する
   String userName = ...
 
   // パスワードを設定する
   char[] password = ...
   
   // PasswordAuthenticationを生成する。
   java.net.PasswordAuthentication auth =
       new java.net.PasswordAuthentication( userName, password );
   
   return auth;
 }
} );

(4) JAX-WS機能固有のプロパティを利用する場合の注意事項

Application Serverは,Java SE標準のjava.net.AuthenticatorクラスのsetDefault()メソッドを利用して,JAX-WS機能固有のプロパティの値をJavaVMに設定します。そのため,次の点に注意してください。