2009-09-18 89 views
1

當試圖設置上下文屬性,像這樣:getServletContext()。getAttribute()返回null?

void init() 
{ 
    String testing = new String(); 
    testing = "This is a test"; 
    getServletContext().setAttribute("test", testing); 
} 

在一個小服務程序,並獲得屬性像這樣:

String testing = (String) getServletContext().getAttribute("test") 

在第二個servlet,testingnull

這是否意味着我的servlet處於不同的上下文中?如果是這樣,我怎樣才能訪問第一個servlet的上下文屬性?請爲此提供參考,因爲我對java/servlet比較新。

我使用NetBeans與Glassfish的3

編輯:它們都在同一個Web應用程序,並在相同的WEB-INF/web.xml中都定義

回答

4

如果兩個servlet都在同一個webapp中,默認情況下初始化的順序是未定義的。所以它可能是,你的「第二個」servlet在「第一個」之前被初始化(根據web.xml中的順序)。您可通過添加時加載的啓動標籤servlet的標籤解決它:

<servlet> 
    <servlet-name>first<servlet-name> 
    ... 
    <load-on-startup>1<load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>second<servlet-name> 
    ... 
    <load-on-startup>2<load-on-startup> 
</servlet> 
+0

謝謝!定義這似乎工作。這一直讓我瘋狂整個上午。你碰巧知道爲什麼這很重要? – moshen 2009-09-18 18:11:33

0

我相信兩個servlet需要在Web應用程序中,也就是打包在同一個war文件中,這樣才能工作。

0

語境== ==戰爭的webapps

兩個servlet有相同的Web應用程序下分擔生活環境。檢查兩個servlet類是否在相同的WEB-INF/classes下。

+0

它們都在同一個Web應用程序,並且都在同一個WEB-INF/web.xml中 – moshen 2009-09-18 14:07:15

相關問題