【发布时间】:2013-10-15 19:30:04
【问题描述】:
TomEE 是一个很棒的项目,它结合了 Tomcat 的轻量级体验和 Java EE 特性。我在 context.xml 中声明了许多 JDBC 数据源,但是当我想通过 JNDI 使用该数据源时,我得到了一个异常。那么如何才能在 TomEE 中使用 context.xml 中声明的 JDBC 数据源
我在 context.xml 中声明的数据源
<Resource auth="Container"
name="local_jdbc_db"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb"
username="user"
password="pass" />
从 JNDI 获取数据源的代码
Context contextoInicial = new InitialContext();
Context contexto = (Context) contextoInicial.lookup("java:comp/env");
DataSource ds= (DataSource) contexto.lookup("local_jdbc_db");
【问题讨论】:
-
在 TomEE 网站上,他们说“任何 Tomcat 提供的资源,比如来自 context.xml,都可以由系统中的任何托管组件查找或注入。”是真的吗?
-
确保将
context.xml放在META-INF文件夹中。 -
当然是在META-INF中
-
当然,我不是新手
-
其实是误报。在 webapp 的
META-INF/文件夹中使用context.xml修复它。我把它放在另一个文件夹(maven 生成)中,它是src/main/resources/META-INF。正确的位置是src/main/webapp/META-INF。
标签: java tomcat jdbc apache-tomee