将servlet与另一个java项目(非servlet)集成时,我遇到了一个严重的问题
我在网上运行了Servet,其中包含另一个项目A的项目参考,该项目在项目A中返回了一个更新的字段STATUS。
项目A是否可以同时运行以更新STATUS,并且servlet将始终返回更新的字段?
现在我只是获取STATUS的默认值,当STATUS更新时,servlet没有获得更新的值。
示例流是这样的...我部署servlet,我运行项目A,5分钟后项目A更新变量STATUS,远程客户端将要求servlet从项目A获取最新的STATUS。
从我的错误中,除非我从servlet运行项目A,否则我无法从servlet获取更新的STATUS。
提前感谢您的回答!
答案 0 :(得分:0)
首先,IDE不是运行时环境。这是一个开发环境。 JVM(JRE的一部分)是运行时环境。 JVM完全没有“项目引用”的概念。它知道的所有Java代码都是运行时类路径中的类。
Servlet通常在servletcontainer中运行,servletcontainer是一个独立的运行时环境。如果您执行普通的Java客户端应用程序(例如,带有main()
方法的JAR),它也将在其自己的独立运行时环境中执行。
如果您希望两个运行时环境相互通信,则必须寻找除“引用项目”之外的其他方式。如果引用项目,则其类将在运行时类路径中获取,但这些类的实例不会在运行时环境之间共享。
但是,有几种方法可以在运行时环境之间共享信息。读取/写入共享文件(最简单,但也是最常见的错误),访问共享SQL数据库,或仅通过RMI,JMS甚至HTTP进行通信。选择哪个取决于唯一的功能要求。