gpt4 book ai didi

java - 在同一服务器中的两个 Web 应用程序之间传递对象

转载 作者:行者123 更新时间:2023-11-28 23:57:42 25 4
gpt4 key购买 nike

我有 2 个 Web 应用程序,GPSClient 和 RuralCloud,部署在我的 tomcat 服务器上,我在其中分别有 2 个 servlet SendData 和 RecieveData。我想将对象从 SendData 发送到 RecieveData。我正在使用 requestDispature,但它不适合我。

这是出现 NullPointerException 的 servlet 代码

@WebServlet("/SendData")
public class SendData extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public SendData() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter out = response.getWriter();

String userID = request.getParameter("userID");
String latitude = request.getParameter("latitude");
String longitude = request.getParameter("longitude");

GPSData d = new GPSData(userID, Double.parseDouble(latitude),
Double.parseDouble(longitude));

request.setAttribute("data", d);

ServletContext context = getServletContext().getContext("/RuralCloud");
RequestDispatcher rd = context.getRequestDispatcher("/RecieveData");
rd.forward(request, response);


}

}

这是错误日志

java.lang.NullPointerException
at com.gps.client.SendData.doPost(SendData.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

有什么办法可以解决这个问题。提前致谢。

最佳答案

您必须记住,两个 Web 应用程序使用完全独立的类加载器,您不能在不同的应用程序上下文中访问彼此的对象 - 假设它们没有任何共同点。

这使您可以通过 http 在两个应用程序之间进行通信 - 事实上,我非常喜欢这种技术。是的,您可以在服务器级别执行更多操作,但他们的解释远远超出了此处单个答案的范围。

与您的问题相关,堆栈跟踪指向一个 NullpointerException at com.gps.client.SendData.doPost(SendData.java:60),但您没有告诉我们那是什么线是。它可能是该方法的最后两行之一,如果您现在添加此信息将无济于事(因为该方法不正确),但通常您希望将这些指针添加到您的问题中以获得更多(更快)帮助。 NPE的位置也可能会指出错误的假设...

因此,一般来说,通过任何其他机制(例如,@Szarpul 建议的 http)。我希望指出您的方法效果不佳的原因。

关于java - 在同一服务器中的两个 Web 应用程序之间传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27923590/

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