如何从 TomEE 7 中的资源获取数据源?
How to obtain datasource from resource(s) in TomEE 7?
我正在做 java 部署到 TomEE 7 的 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。有人知道如何解决这个问题吗?
谢谢
将 JTAManaged
设置为真。
<?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
设置正确。
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");
在 tomee 中配置资源的推荐方法是使用
tomee.xml
但这个必须在 tomee_base/conf/ 或
- 您可以在 WEB-INF 中使用
resources.xml
完成此操作(只需将根标记更改为 "resources" 而不是 "tomee")。
错误可能是文件的本地化。
旁注:
不需要在注入点设置type = javax.sql.DataSource.class
,因为它是字段类型。
我正在做 java 部署到 TomEE 7 的 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。有人知道如何解决这个问题吗?
谢谢
将 JTAManaged
设置为真。
<?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
设置正确。
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");
在 tomee 中配置资源的推荐方法是使用
tomee.xml
但这个必须在 tomee_base/conf/ 或- 您可以在 WEB-INF 中使用
resources.xml
完成此操作(只需将根标记更改为 "resources" 而不是 "tomee")。
错误可能是文件的本地化。
旁注:
不需要在注入点设置type = javax.sql.DataSource.class
,因为它是字段类型。