2011-05-23 81 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的帮助,只要你选择这种方式。)