OpenJDK 25 で socksProxyVersion を使って SOCKS4 を選択する
OpenJDK 25 で明示的な SOCKS エンドポイントとともに文書化されたバージョンプロパティを使用し、プロパティが JVM 全体に及ぶスコープを考慮します。
OpenJDK 25 のソケット実装では、socksProxyVersion プロパティで SOCKS4 を選択します。アプリケーションの起動時に指定できます:
java -DsocksProxyVersion=4 YourApplicationアプリケーションはプロキシのエンドポイントを明示的に指定することもできます:
Proxy proxy = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("proxy.example", 1080));
try (Socket socket = new Socket(proxy)) {
socket.connect(new InetSocketAddress("192.0.2.10", 80), 5000);
socket.setSoTimeout(10000);
}アドレスはプレースホルダーです。SOCKS4 プロキシ一覧の未認証アドレスを、許可されたパブリック IPv4 テスト用のプロキシホストとポートに使用できます。実際の対象 IPv4 アドレスとポートは別に指定してください。この断片は TCP ストリームを開いて閉じます。アプリケーションプロトコルはブロック内で接続済みストリームを使用します。
OpenJDK 25 の実装は、コンストラクタが通常の明示的な SOCKS Proxy を受け取った場合でもバージョンプロパティを確認します。公開 Proxy オブジェクト自体には型とアドレスが含まれ、オブジェクトごとの SOCKS バージョンフィールドはありません。
バージョンプロパティは JVM 全体のスコープを持ちます。同時実行のワークロードが異なる SOCKS バージョンを必要とする場合は、個々のリクエストの前後で切り替えないでください。代わりに、接続ごとに必要な選択をサポートするクライアントインターフェースを使用してください。古い JDK の例にある private な setV4 リフレクションは、サポートされる設定インターフェースではありません。