1

異なる tomcat サーバーで実行されている 2 つのサーブレットがあります。

私は、次の方法で servlet2 から servlet1 を呼び出そうとし、オブジェクトを出力ストリームに書き込みたいと考えました。

URL url=new URL("http://msyserver/abc/servlet1");
URLConnection con=url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
OutputStream os=con.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(pushEmailDTO);
oos.flush();
oos.close();

問題は、サーブレットをヒットできないことですか? 何が欠けているのかわかりません。

4

3 に答える 3

6

url.connect()データの読み取り/送信を行う前に、経由で接続を作成する必要があります。openConnection()名前がすでにそれを行っていることを示唆しているため、これは直観に反していますが、ドキュメントには次のように書かれています。

一般に、URL への接続の作成は複数のステップからなるプロセスです。

  1. openConnection()
  2. リモート リソースへの接続に影響するパラメータを操作します。
  3. 接続()
  4. リソースと対話します。ヘッダー フィールドと内容を照会します。

これがgetExpiration()機能する理由です。それはあなたを必要とconnect()します。

于 2009-05-18T07:56:50.247 に答える
1

あなたが得ているエラーは何ですか?アドレスが正しいことを確認してください。リモート サーバーが 80 以外のポートで実行されている場合は、URL を作成するときにこれを考慮してください。

また、URLConnection の代わりにHttpClientを使用することをお勧めします。

于 2009-05-18T05:44:16.710 に答える
1

わかりませんが、コードに次の行を追加することで機能しました。

con.getExpiration();

このような

URL url=new URL("http://msyserver/abc/servlet1");
URLConnection con=url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.getExpiration();//<----------
OutputStream os=con.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(os);
oos.writeObject(pushEmailDTO);
oos.flush();
oos.close();
于 2009-05-18T06:25:27.800 に答える