Java 远程servlet之间的通信
我有两个web应用程序,分别是App1和App2。我想从App1中的servlet调用App2中的servlet。我正在为此使用URLConnection。我还能够将参数传递给App2中的servlet,并且能够以字符串形式接收来自servlet的响应。但是我想从App2中的servlet发送java对象,并在App1的servlet中接收它们。如何实现这一点?取决于具体情况Java 远程servlet之间的通信,java,servlets,Java,Servlets,我有两个web应用程序,分别是App1和App2。我想从App1中的servlet调用App2中的servlet。我正在为此使用URLConnection。我还能够将参数传递给App2中的servlet,并且能够以字符串形式接收来自servlet的响应。但是我想从App2中的servlet发送java对象,并在App1的servlet中接收它们。如何实现这一点?取决于具体情况 如果这些Web应用程序在同一servletcontainer中的同一Web服务器上运行,则只需将其设置为请求属性并将请
如果这些Web应用程序在同一servletcontainer中的同一Web服务器上运行,则只需将其设置为请求属性并将请求转发到其他上下文:
request.setAttribute("name", object);
ServletContext app2 = getServletContext().getContext("app2");
app2.getRequestDispacher("servletUrl").forward(request, response);
另一个上下文将能够获得对象,如下所示:
Object object = request.getAttribute("name");
这只需要一个服务器设置,使上下文可以相互访问。如何做到这一点取决于servletcontainer。例如,您只需要将webapp的
元素的crossContext
属性设置为true
<Context crossContext="true">
然后它将可用于其他上下文。对于其他服务器,请参阅其文档
如果这些Web应用程序在物理上不同的Web服务器上运行,则有几个选项:
URLConnection
或按照发送multipart/form data
HTTP POST请求,并在另一端使用进行处理。优点:标准规格,可发送二进制数据。缺点:更多代码
另请参见:URLConnection#getOutputStream()
并从HttpServletRequest#getInputStream()
中检索它,然后使用取消序列化。优点:简单。缺点:不可重用,紧密耦合
另请参见:和