2010-11-08 45 views
1

我已经整合我的Servlet时与其他Java项目(非的servlet)的Java Servlet与其他项目引用

遇到了严重的问题,我有一个具有其它项目中的一个项目引用网络上运行的SERVET那返回项目A中更新的字段STATUS。

项目A是否可以同时运行更新STATUS,并且该servlet将始终返回更新的字段?

现在我刚刚得到STATUS的默认值,当STATUS更新时,servlet没有得到更新的值。

样本流是这样的......我部署servlet,我运行项目A,5分钟后项目A更新变量STATUS,远程客户端会要求servlet从项目A获取最新状态。

从我的错误,我不能从servlet获得更新的STATUS,除非我从servlet运行项目A.

在此先感谢您的答案!

+2

恐怕你没有提供足够的细节给我或任何人,能够给你一个答案。 – Montecarlo 2010-11-08 23:07:17

+0

你需要从“项目A”初始化一些代码吗?看看'ServletContextListener',但我不确定,你真的想知道什么。 – 2010-11-10 22:09:49

回答

0

首先,IDE不是运行环境。这是一个开发环境。 JVM(JRE的一部分)是运行时环境。 JVM完全没有“项目引用”的概念。它知道的所有Java代码都是运行时类路径中的类。

Servlet通常运行在一个servletcontainer中,该servletcontainer是独立的运行时环境。如果您执行普通的vanilla Java客户端应用程序(例如,使用main()方法的JAR),它也将在其自己的独立运行时环境中执行。

如果你想让两个运行时环境相互通信,你必须寻找除“引用项目”之外的其他方法。如果引用一个项目,它的类将在运行时类路径中进行,但这些类的实例不会在运行时环境中共享。

但是,有几种方法可以在运行时环境之间共享信息。读取/写入共享文件(最简单,也是最错误的),访问共享SQL数据库,或者只是通过RMI,JMS甚至HTTP进行通信。选择哪个取决于唯一的功能要求。

+0

感谢您的解释,有没有什么办法可以在部署web servlet时在同一运行时环境中运行应用程序?我正在使用Glassfish – Dillon 2010-11-09 00:06:39

+0

取决于唯一的功能要求。 – BalusC 2010-11-09 01:19:52