2013-03-28 45 views
1

注:這是不是跨發帖,問不同的問題(相關ClassCastError when share objects between webappJava的Web應用程序,的getContext總是返回相同的對象

我在同一Tomcat實例兩個不同的上下文中運行的兩個web應用,當第二應用程序嘗試獲取第一個應用程序上下文,無論我輸入的名稱是什麼,對象都是相同的上下文,這是錯誤的。

public void contextInitialized(ServletContextEvent sce) { 
     ServletContext context= sce.getServletContext().getContext("/bling"); 
     ServletContext context2= sce.getServletContext().getContext("/bla"); 

兩個對象背景和上下文2有這個對象的id [email protected]

我使用tomcat7。有小費嗎? tks

更新: Tks的所有好建議。 如果第二web應用(如上面的代碼是)部署在服務器的ROOT的問題正好(在我的結構是必須的,不能改變)。任何更多的提示。韓國社交協會。

+0

看看這裏 http://javapapers.com/servlet/difference-between -servletconfig和-的ServletContext/ – Code2Interface 2013-03-28 05:18:20

+0

@LuiggiMendoza你可能是錯的,手冊上說的:'給定的路徑必須以「/」,是相對於服務器的文檔根目錄進行解釋,並開始對被其他網站的上下文根匹配運行在此container.' – gerrytan 2013-03-28 05:18:30

+0

相關應用:http://stackoverflow.com/q/2088633/1065197 – 2013-03-28 05:21:06

回答

2

我猜這是一個時間問題。也許當ServletContext A初始化並試圖獲取ServletContext B時,ServletContext B尚未初始化/部署。

爲了證明這一點,嘗試一個servlet的doGet內的另一個試驗,並調用它,當你確定這兩個web應用的正確部署

+0

我認爲ServletContext是在部署應用程序時創建的,而在Tomcat中,啓動服務器時會發生這種情況。 – 2013-03-28 05:24:06

+0

但OP的代碼似乎上下文初始化事件運行,也許是太早做 – gerrytan 2013-03-28 05:27:28

+0

好點的福爾摩斯。 – 2013-03-28 05:29:11

相關問題