WAR中的配置

时间:2016-04-08 16:53:20

标签: java tomcat java-ee glassfish

我在Tomcat中有一个context.xml

<Resource name="datasource/sconfiguration" auth="Container" connectionString=...

我可以让我的对象充满:

MyConfiguration sc = (MyConfiguration) envCtx.lookup("datasource/sconfiguration");

现在我想在Glassfish 4.1中使用我的WAR ......它似乎不起作用:

javax.naming.NamingException: Lookup failed for 'datasource/sconfiguration' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterpr ....

为特定的应用服务器设置WAR似乎很奇怪。如何使此WAR对任何WAS都有效?似乎是Glassfish can use context.xml,但很多人说它不能。{/ p>

1 个答案:

答案 0 :(得分:0)

管理内容不是标准WAR的一部分。说实话,它总是在应用程序服务器之间移植最难的部分。

在Tomcat中,您可以如您所见,在context.xml中定义JNDI数据源。我早就放弃了Glassfish,但我知道有一个相当完整的UI来定义数据源。其他应用程序服务器(如WildFly)同时具有UI和CLI来定义数据源之类的东西(而Glassfish也可能有这样的东西)。

你为什么这么问?因为允许每个应用程序服务器增加数据库连接池等区域。 Tomcat最近决定摆脱公共DBCP池,转而使用内部池。由于存在这些差异,每个应用程序服务器都定义了一些不同的方式来配置JDBC连接和数据源。

要对此进行管理,您需要为要定位的每个应用程序服务器设置脚本/预配置的配置文件。最终用户需要使用适合其环境的内容。