【问题标题】:How to obtain datasource from resource(s) in TomEE 7?如何从 TomEE 7 中的资源中获取数据源?
【发布时间】:2016-06-28 14:06:36
【问题描述】:

我正在做 java EE web 应用程序并部署到 TomEE 7,我需要从 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。有人知道如何解决这个问题吗?

谢谢

【问题讨论】:

  • 您尝试在哪个组件(servlet、ejb 等)中注入数据源?
  • servlet。已经解决了这个问题。谢谢

标签: java jakarta-ee datasource apache-tomee tomee-7


【解决方案1】:

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 设置正确。

【讨论】:

  • 感谢您的回答,但我使用的是 jdbc,我想在 tomee.xml 中配置,甚至在 resources.xml 中配置更好,而不是获取 DataSource 对象
  • 看起来我做的一切都是正确的。通过@Resource注解获取DataSource对象时出现问题
【解决方案2】:

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>

然后获取DataSource对象

        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        dataSource = (DataSource) envCtx.lookup("rss_db_datasource");

【讨论】:

    【解决方案3】:

    在tomee中配置资源的推荐方式是使用

    1. tomee.xml 但这个需要在 tomee_base/conf/ 或
    2. 您可以在 WEB-INF 中使用resources.xml 进行操作(只需将根标签更改为“resources”而不是“tomee”)。

    错误可能是文件的本地化。

    旁注:

    你不需要在注入点设置type = javax.sql.DataSource.class,因为它是字段类型。

    【讨论】:

      猜你喜欢
      • 2015-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多