关于tomcat和RMI远程访问服务的内存共享问题

SunnyCoffee 2011-07-26 11:21:18
RMI服务启动创建一个public static List list;
并且list = new ArrayList();
list.add("ss");
添加对象
public class RmiServer {

public static List list;

public static void main(String[] args) {
try {
// 加载安全管理器
// System.setSecurityManager(new RMISecurityManager());
// 创建远程接口实现类的实例。
AddServerImpl addImpl = new AddServerImpl();
// 注册远程服务的端口
LocateRegistry.createRegistry(1099);
// 将远程实例绑定为远程服务。
Naming.bind("rmi://127.0.0.1:1099/addnum", addImpl);
list = new ArrayList();
list.add("ss");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AlreadyBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}


tomcat启动
在servlet里面

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(RmiServer.list.size());
}

报错:
严重: Servlet.service() for servlet TestServlet threw exception
java.lang.NullPointerException
at com.hiteam.mysearch.servlet.TestServlet.doPost(TestServlet.java:59)
at com.hiteam.mysearch.servlet.TestServlet.doGet(TestServlet.java:43)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)



RmiServer.list以证明为空。这是为什么呢,是因为没有共享内存还是static生命周期问题





...全文
117 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
SunnyCoffee 2011-08-13
  • 打赏
  • 举报
回复
问题已经自己解决,原因:两个服务属于两个进程。进程之间不共享内存。

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧