免责声明:这不是“为什么没有考虑 META-INF/context.xml 中声明的我的 JDBC 资源”类型问题的重复。
我有两个 Java EE Web 应用程序:
一个是使用 Eclipse 的“Web 应用程序项目”模板在 Eclipde IDE 中创建的
另一个是使用 Maven 创建的,然后导入到 Eclipse 中
在 Eclipse 内部,我还使用 WTP 插件配置了一个 Tomcat,这样我就可以轻松地(或者我希望如此)以“一键式”的方式在其中部署我的 Eclipse Web 应用程序。
对于上述每个应用程序,我在其 META-INF 目录中放置了一个 context.xml 文件,其中我将一些 JDBC 数据源声明为 JNDI 资源。
当部署在 Eclipse 内的 WTP Tomcat 中时,Eclipse 创建的应用程序运行良好。我在 Eclipse 中右键单击 Tomcat 服务器,添加项目,启动它,一切正常,找到 JNDI 数据源等。
对于另一个项目,使用 Maven 创建并在 Eclipse 中导入的项目,如果我将其添加到 WTP Tomcat,并手动指定 Maven 构建 war 文件的位置(在“目标”目录中),它似乎可以工作,但是找不到 JNDI 数据源,更具体地说,我的 Spring 声明的数据源:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/whatever" />
抛出一个异常,说没有 JNDI 名称被绑定为“whatever”。
如果我在“常规”Tomcat 中部署相同的 war 文件(只是解压缩 Tomcat,不涉及 Eclipse),它可以正常工作,并且找到在 war 的 META-INF/context.xml 中声明的 JNDI 数据源。
我查看了 Eclipse 的 Tomcat 工作目录,果然在 Eclipse 创建的项目中,context.xml 文件被复制到“{catalina home}\wtpwebapps\eclipeProjectName\META-INF\context.xml”中,没有这样的文件(和文件夹结构)用于 Maven 项目。
我的问题是:有谁知道如何在 Eclipse 中导入 Maven 创建的 Web 应用程序并部署在 WTP Tomcat 中,以便考虑 META-INF/context.xml 文件?