1

我有两个在不同的 tomcat 服务器上运行的 servlet。

我并尝试通过以下方式从 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();

问题是我无法访问 servlet?我无法弄清楚我错过了什么。

4

3 回答 3

6

您必须先创建连接,url.connect()然后才能读取/发送数据。这是违反直觉的,因为openConnection()顾名思义它已经这样做了,但文档说:

通常,创建到 URL 的连接是一个多步骤的过程:

  1. openConnection()
  2. 操纵影响与远程资源的连接的参数。
  3. 连接()
  4. 与资源交互;查询标题字段和内容。

这就是getExpiration()让它发挥作用的原因:它需要connect()你。

于 2009-05-18T07:56:50.247 回答
1

你得到什么错误?检查地址是否正确。如果远程服务器在 80 以外的端口中运行,则在构建 URL 时要考虑到这一点。

我也可以建议使用HttpClient而不是 URLConnection。

于 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 回答