重複の可能性:
リモート サーブレット間の通信
異なるサーバー上のサーブレット間でオブジェクトを送信することは可能ですか? 問題は、サーブレットが http 要求を受信すると、応答を送信する前に、別の Web アプリケーション (別のサーバー上) にデータを送信し、応答を取得して、受信したデータを処理する必要があることです。しかし、私は問題に取り組む方法を本当に知りません。サーブレットが別のサーブレットに http リクエストを送信し、そこから応答を取得することは可能ですか?
重複の可能性:
リモート サーブレット間の通信
異なるサーバー上のサーブレット間でオブジェクトを送信することは可能ですか? 問題は、サーブレットが http 要求を受信すると、応答を送信する前に、別の Web アプリケーション (別のサーバー上) にデータを送信し、応答を取得して、受信したデータを処理する必要があることです。しかし、私は問題に取り組む方法を本当に知りません。サーブレットが別のサーブレットに http リクエストを送信し、そこから応答を取得することは可能ですか?
HttpURLConnection を使用して別のサーブレット (または任意の http サーバー) と通信する方法の例を次に示します...
URL url = new URL ("http://host/myservlet");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput (true);
connection.setDoInput (true);
OutputStream os = connection.getOutputStream();
//TODO: optionally, send something through the OutputStream to your servlet
os.flush();
os.close();
InputStream is = connection.getInputStream();
//TODO: retrieve your results from the InputStream
is.close();
完了したら必ずストリームを閉じるか、try-with-resources ブロックを使用してください。必要に応じて、ObjectInputStream または InputStreamReader を使用できます。必要に応じて、HttpURLConnection の setRequestProperty メソッドを使用して、ユーザー エージェントや Cookie などを定義することもできます。
もちろん可能ですHttpURLConnection
。JavaSE から作成するのと同じ方法で を作成できます。通常、エラーが発生した場合、元の (2 番目のサーバー) HTTP エラー コードをクライアントに転送します。