私はインターネット上のシステムにSOAPクライアント要求を行う必要があるアプリケーションを持っているので、HTTPプロキシを経由する必要があります。システム全体のプロパティを設定せずにJAX-WSリクエストにHTTPプロキシを使用するにはどうすればよいですか?
// Cowboy-style. Blow away anything any other part of the application has set.
System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", HTTPS_PROXY_HOST);
System.getProperties().put("https.proxyPort", HTTPS_PROXY_PORT);
またはデフォルトのProxySelector(また、システム全体の設定)を設定することにより:
// More Cowboy-style! Every thing Google has found says to do it this way!?!?!
ProxySelector.setDefault(new MyProxySelector(HTTPS_PROXY_HOST, HTTPS_PROXY_PORT));
どちらのを
一つは、システムプロパティとして、システム全体の値を設定することによってこれを行うことができ異なるHTTPプロキシを介して、またはプロキシを使用せずにWebサーバーにアクセスすることを望む他のサブシステムの可能性がある場合、これは賢明な選択です。 ProxySelector
を使用すると、どの接続がプロキシを使用するかを設定できるようになりますが、巨大なアプリケーションのすべてのものに対してそのことを理解する必要があります。
妥当なAPIは、java.net.Socket(java.net.Proxy proxy)
のコンストラクタのように、java.net.Proxy
オブジェクトを受け取るメソッドを持ちます。そうすることで、必要な設定は、システムの設定が必要な部分にとってローカルになります。 JAX-WSでこれを行う方法はありますか?
システム全体のプロキシ設定を設定したくありません。
'JAXWSProperties'が私のJDK 1.6に存在すると表示されません。 – jbindel
他に何も現れなければ、私はこれを後で受け入れます。 – jbindel
あなたのメソッドはうまくいきました。私たちはそれをうまく実装しましたが、サポートされているAPIと 'HttpsURLConnection.setDefaultSSLSocketFactory()'を使って 'SSLSocketFactory'のJVMワイドな設定を行うことに決めました。任意のキーと証明書を、デフォルトのキーストアとトラストストアの1つのバージョンに結合します。 – jbindel