gpt4 book ai didi

java - 部署在同一 tomcat 服务器上的两个 Web 应用程序之间的跨上下文通信

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:01 25 4
gpt4 key购买 nike

我有两个 Web 应用程序,webAppMasterwebAppSlave,部署在同一个 tomcat 服务器上。现在在webAppMaster应用程序中,有一个java类RequestHandler,它的processRequest方法接受一个customObject1作为参数并返回自定义对象 2。现在,从 webAppSlave 应用程序的 RequestCreator 类,我想调用 RequestHandler 类的 processRequest 方法webAppMaster 应用程序。这应该怎么做?提前致谢。

最佳答案

您需要在应用程序之间进行对话,就像在两个远距离应用程序之间进行对话一样。它们位于同一台服务器上并不重要,它们只需要使用某种协议(protocol)进行通信即可。

你要做的其实是RMI(远程方法调用)- http://docs.oracle.com/javase/tutorial/rmi/

您可以使用一些更轻量级的通信方式来代替 rmi。例如,您可以通过 Rest 进行通信。在这种情况下,在 webAppMaster 应用程序中创建 servlet,它将您的 customObject1 序列化为 JSON 作为参数(作为 URL 请求参数或使用 POST 方法)。然后这个 servlet 会将 JSON 字符串转换为 customObject1 并调用 processRequest。稍后在 processRequest() 返回 customObject2 后将其转换为 JSON 并发送回客户端。在客户端读取 json 并将 JSON 反序列化回 webappSlave 中的 customObject2。

public class MasterServlet extends javax.servlet.http.HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
CustomObject1 customObject1 = buildCustomObject1BasingOnRequestParams(HttpServletRequest request); // read the request params and build your object either from json or whatever format webappSlave used to send

CustomObject2 customObject2 = RequestHandler.processRequest(customObject1);
String json = transformTOJson(customObject2); // there are many libaries which does this

response.getWriter().print(json);


}
}

您的从属应用程序会做相反的事情。先将customObject1序列化为JSON,再将接收到的JSON反序列化为customObjec2。

作为第三个选项,您可以使用 HTTP 隧道在应用程序之间发送对象(例如引用这篇文章:Serializing over HTTP correct way to convert object.)作为示例。

关于java - 部署在同一 tomcat 服务器上的两个 Web 应用程序之间的跨上下文通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26065917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com