如何从TomEE 7中的资源获取数据源?
问题描述:
我正在执行部署到TomEE 7的Java EE Web应用程序,我需要从tomee.xml获取数据源。 tomee.xml位于WEB-INF目录下,并具有以下内容:如何从TomEE 7中的资源获取数据源?
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<Resource id="rss_db_datasource" type="javax.sql.DataSource">
JdbcDriver = org.hsqldb.jdbcDriver
JdbcUrl = jdbc:hsqldb:file:/rss_db
UserName = sa
Password =
</Resource>
</tomee>
我想使用此代码注入数据源:
@Resource(name="rss_db_datasource", type = javax.sql.DataSource.class)
private DataSource dataSource;
当我试图从数据源连接我得到NullPointerException。有人知道如何解决这个问题吗?
谢谢
答
META-INF - > context.xml的
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="rss_db_datasource" type="javax.sql.DataSource"
username="sa" password=""
driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:D:/rss_db"
/>
</Context>
,然后让数据源对象
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
dataSource = (DataSource) envCtx.lookup("rss_db_datasource");
答
设置JTAManaged
为true。
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<Resource id="rss_db_datasource" type="javax.sql.DataSource">
JdbcDriver = org.hsqldb.jdbcDriver
JdbcUrl = jdbc:hsqldb:file:/rss_db
UserName = sa
Password =
JtaManaged true
</Resource>
</tomee>
,并且确保在persistence.xml中的jta-data-source
设置正确。
答
推荐的方式来配置资源tomee使用
-
tomee.xml
但这一个需要在tomee_base/conf /或 - 您可以在WEB-INF中使用
resources.xml
(只需将根标记更改为“resources”而不是“tomee”)。
错误可能是文件的本地化。
旁注:
你不需要在注入点来设置type = javax.sql.DataSource.class
,因为它是字段类型。
你正在尝试注入数据源的组件(servlet,ejb等)? –
servlet。已经解决了这个问题。谢谢 – VadOs