2011-05-23 47 views
0

我是Tomcat的新手,因此有幾個問題。我想從任何代碼中爲我的上下文提供某些對象。我能夠爲DataSource實現此目標,因爲這是Tomcat指南中使用的示例。Apache Tomcat:「上下文變量」

我想補充的2個額外的對象:在使用對象A在它的構造

我怎樣才能做到這一點的構造 對象B已經使用這個數據源 對象A?

回答

1

可能最簡單的做法是使用ContextListener將對象A和B插入到上下文中。有關使用示例,請參見http://download.oracle.com/javaee/1.4/tutorial/doc/Servlets4.html:在contextInitialized方法中,您可以從上下文中獲取數據源,創建對象A和B,然後將其存儲回上下文中。

+0

我假設用「將它們存儲回上下文」,你的意思是context.bind?我試過了,結果出現異常。 「谷歌搜索」顯示tomcat上下文是隻讀的。所以這是行不通的。 – 2011-05-23 11:25:23

+0

'context.setAttribute'(請參閱http://download.oracle.com/javaee/5/api/javax/servlet/ServletContext.html#setAttribute%28java.lang.String,%20java.lang.Object%29)is你想要的方法。然後您可以使用'context.getAttribute'將它們取出(請參閱http://download.oracle.com/javaee/5/api/javax/servlet/ServletContext.html#getAttribute%28java.lang.String%29)。看看javadoc:它通常是找出可用工具的最簡單方法。 – Femi 2011-05-23 15:33:58

0

根據Tomcat 5.5規範。發現在http://tomcat.apache.org/tomcat-5.5-doc/config/globalresources.html我看到,Context是不能夠做這樣的技巧,而不是這種用法。

您希望從「任何代碼」獲得一些對象。如果這僅限於單個Web應用程序,則可以考慮使用@Fermi的答案,或者也許應該啓動彈出ApplicationContext。如果你還不熟悉Spring Framework,那聽起來可能有些困難,但是如果你繼續開發你的應用程序,我認爲如果從一開始就已經存在一個Spring上下文,事情就會變得更加容易。 (在評論中告訴我,如果你需要設置Spring的幫助,只要你選擇這種方式。)