我正在部署到TomEE 7的java EE Web应用程序,我需要从tomee.xml获取数据源。 tomee.xml位于WEB-INF目录中,其内容如下:
<?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。有谁知道如何解决这个问题?
谢谢
答案 0 :(得分:1)
将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
。
答案 1 :(得分:1)
META-INF - &gt; 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>
然后获取DataSource对象
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
dataSource = (DataSource) envCtx.lookup("rss_db_datasource");
答案 2 :(得分:1)
在tomee中配置资源的推荐方法是使用
tomee.xml
但是这个需要在tomee_base / conf /或resources.xml
在WEB-INF中执行此操作(只需将根标记更改为&#34;资源&#34;而不是&#34; tomee&#34;)。错误可能是文件的本地化。
旁注:
您不需要在注入点设置type = javax.sql.DataSource.class
,因为它是字段类型。