2016-04-25 1 views
0

私はプロキシ設定とJVMを使いこなしています。明らかに、OS X(私のケースではMaverics)は、JVM(今日の時点では1.8_92)がシステム環境設定で設定されているプロキシを自動的に適用する唯一のシステムです。私がテストした他のシステム(openboxを使ったArch Linux、Gnome/KDE、Windows 7、最新のDebianバージョン)はそうしないので、 '-Djava.net.useSystemProxies'を使うか、 (Windows上で動作)、または明示的に '-Dhttp.proxyHost = ...'などを使用してプロキシを設定します。OS XのシステムプロキシのJVM自動設定はどのように機能しますか?

私は特別な 'マーカー'プロキシホストを使用しているので、OS Xシステムのプロキシが適用されていることは確かです環境設定の名前。ホスト名を変更すると、JVMはそのプロキシ設定を新しいホスト名に変更します(JVMを再起動する必要がありますが、JVMの実行中は変更されませんが問題ありません)。

私はこの動作がクールであることを発見しました(明らかに、プロキシはOS Xの箱から外に出ていますが、これは他のシステムで問題が発生した後に爽やかです)。

誰かがOS XのJVMでマジックを行っていることを確認できますか?そしてそれはどこで、誰によって起こりますか? Mac用のJVMはスマートで、OS Xのプロキシ設定を調べる方法を知っているか、ネットワーク設定が変更されるたびに設定ファイルが書き込まれる可能性があり、起動時にJVMがそれを読み込めるだけでなく、または...多くのオプションが、どのようにそれは実際に仕事ですか?

答えて

1

libjavaGetJavaPropertiesへの呼び出しが実装に依存しています。 Mac OSXは一般的なUnix実装を共有しています。これは、ファイルシステムのデフォルトのエンコーディングなどの一般的なJavaプロパティにスタンプされるように、システムプロパティを設定するために使用されます。

は、MACOSXに条件付きで含まれており、OSX標準のシステム構成フレームワークを使用してプロキシ検索を実行するsetProxyPropertiesを呼び出します。

システムプロキシ情報がわかったら、コールチェーンを通じてSystem.cに戻され、プロキシ情報が見つかった場合は標準のJavaシステムプロパティhttp.proxyPortなどが設定されます。

だから、コールスタックは、次のとおりです。

  • Java_java_lang_System_initProperties
  • GetJavaProperties
  • setProxyProperties
  • SCDynamicStoreCopyProxies <からにPUTPROP続くOSX特定のコール

もし上記が何かを返すなら、メソッドはです。

関連する問題