Tomcat7で実行されているサーブレットがあり、サードパーティのWebサイトに対してWebサービス呼び出しを行います。呼び出しはWindowsマシンからは正常に機能しますが、Tomcatから実行すると失敗します。 Tomcatは自動的にWindowsのプロキシ設定を使用しませんか?追加した
set Java_OPTS=%Java_OPTS% "-Dhttp.proxySet=true"
set Java_OPTS=%Java_OPTS% "-Dhttp.proxyHost=IP"
set Java_OPTS=%Java_OPTS% "-Dhttp.proxyPort=8080"
cATALINA.BATおよび
http.proxyHost=IP
http.proxyPort=8080
to catalina.propertiesしかし、それでも変更はありません。 Windowsのプロキシ設定を使用するようにTomcatを設定するにはどうすればよいですか?Tomcatが指定されたプロキシ設定を取得しているかどうかを確認する方法はありますか?
いいえ、Tomcatはシステムのプロキシ設定を自動的に使用しません。
Java.net.Proxy
が提供する機能を確認することをお勧めします。これにより、実行時にプロキシを動的に指定できます。システムプロパティは機能しますが、読み取られるのは1回だけです。Tomcatが設定前に独自の目的でHttpURLConnection
をすでに使用している場合は、これで終わりです。設定は無効です。
Java.net.Proxy
の使用に同意しません。
変更する必要がある場合はどうなりますか?新しいビルド、新しいリリース。プロキシの設定は簡単なはずです。これは、システムプロパティまたはTomcat Java_OPTSの両方でうまく機能します。両方の方法で使用しました。ロードされるJava_OPTSや、Javaが使用されるなど)を知っていることを確認してください。独自のJava。以前の投稿に関して、Javaはロードされる前に使用できます)方法はありません。したがって、Tomcatはシステムプロパティが使用される前にそれを使用できません... Tomcatが別のJREを使用する場合のみシステムプロパティを読み取らない。
私はこのセットアップをテストするだけです:
set "Java_OPTS=%Java_OPTS% -Dhttp.proxyHost=proxy.com -Dhttp.proxyPort=8080 "
catalina.batにあり、うまく機能します。
プロキシ設定を指定する際、以下のようにプロキシサーバー名を定義する必要があります。
"-Dhttp.proxyHost=proxy.example.com"
/bin/setenv.shを作成します(WINDOWS\bin\setenv.batの場合):
Java_OPTS="-Dhttp.proxySet=true -Dhttp.proxyHost=<proxy_hostname> -Dhttp.proxyPort=<port_number> -Dhttp.nonProxyHosts=<domain_one>|<domain two> $Java_OPTS"
[〜#〜] note [〜#〜]:すでにsetenv.sh/setenv.batがある場合は、上記のコマンドの行を追加できます。 Tomcat起動スクリプトは、Tomcatインスタンスを起動する前にsetenvスクリプトを自動的に実行します。
HTTPプロキシ、HTTPSプロキシ、およびHTTP/HTTPS非プロキシホストをTomcatにも実装できます。 bin/Catalina.sh
とconf/catalina.properties
の2つのファイルを更新する必要があります。
JProxyLoaderライブラリを使用できます。このlibを使用すると、特定のホストへの接続にのみプロキシを使用するようにTomcatを構成できます。あなたの場合、Webサービスを提供するホストへの接続に対してのみ、プロキシを経由するようにTomcatを構成できます(他のすべての接続は、Tomcatの「通常の」方法-プロキシなしで処理されます)。
完全なセットアップについては、プロジェクトのWebサイトで説明されています。 http://jproxyloader.sourceforge.net/examples/web-application-on-Tomcat.html