2010-11-08 61 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

相關問題