2009-05-18 19 views
1

私は2つのサーブレットを異なるTomcatサーバー上で実行しています。別のサーブレットからサーブレットを呼び出す

私は次のようにしてservlet1から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(); 

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

答えて

1

私は理解できませんが、コード内に次の行を追加して機能しました。あなたがデータを送信する/読むことができる前に、あなたはurl.connect()経由の接続を作成する必要があります。この

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(); 
+0

新しい訪問者のために、これが役立つかもしれません - http://stackoverflow.com/questions/4844535/why-do-you-have-to-call-urlconnectiongetinputstream-to-beable-to-write-out-toto – Gyan

1

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

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

+0

すべての行が正常に実行されるという例外はありません。また、サーブレットは、私が上記のコードを渡している正確なURLで実行されています。 –

6

よう

con.getExpiration(); 

  1. openConnection()
  2. :URLへの接続を作成することは多段階プロセスである、一般的に

    :名前openConnection()はそれがすでにありませんが、ドキュメントが言うことを示唆しているので、これは直感に反するですリモートリソースへの接続に影響を与えるパラメータを操作します。

  3. connect()
  4. リソースと対話します。クエリヘッダフィールドと内容。

getExpiration()はそれが仕事になる理由はここにある:それはあなたのためにconnect()を呼び出します。

関連する問題