Java 未找到TomEE部署失败的数据源

Java 未找到TomEE部署失败的数据源,java,datasource,web-deployment,apache-tomee,openejb,Java,Datasource,Web Deployment,Apache Tomee,Openejb,我想将war文件部署到TomEE,但由于以下原因失败: 原因: javax.naming.NameNotFoundException: Name openejb/Resource/application_name/mysql_ds" not found. 如果重新启动服务器,部署会正常进行,但只会发生一次,然后会遇到相同的错误 我在WEB-INF/resources.xml文件中定义了数据源 <tomee> <Resource id="mysql_ds"

我想将war文件部署到TomEE,但由于以下原因失败:

原因:

javax.naming.NameNotFoundException: 
      Name openejb/Resource/application_name/mysql_ds" not found.
如果重新启动服务器,部署会正常进行,但只会发生一次,然后会遇到相同的错误

我在WEB-INF/resources.xml文件中定义了数据源

<tomee>
    <Resource id="mysql_ds" type="javax.sql.DataSource">
        JdbcDriver  = com.mysql.jdbc.Driver
        JdbcUrl     = jdbc:mysql://IP:3306/db?serverTimezone=UTC&amp;autoReconnect=true
        UserName    = user
        Password    = password
        JtaManaged  = true
    </Resource>
</tomee>

JdbcDriver=com.mysql.jdbc.Driver
JdbcUrl=jdbc:mysql://IP:3306/db?serverTimezone=UTC&自动重新连接=真
用户名=用户
密码=密码
JtaManaged=true

另外,我还应该提到,还有另一个克隆应用程序(开发模式)具有相同的配置,并且运行良好。

您可以使用
WEB-INF/resources.xml
定义一个或多个数据源,或者使用
/conf
文件夹中的
tomee.xml
文件,如tomee项目文档的中所述:

可以通过/conf/tomee.xml文件或WEB-INF/resources.xml文件中的xml声明数据源

但是,
resources.xml
的语法与容器范围的定义略有不同。对于与web应用程序捆绑在一起的
resources.xml
,其格式应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <Resource id="mysql_ds" type="javax.sql.DataSource">
        JdbcDriver  = com.mysql.jdbc.Driver
        JdbcUrl     = jdbc:mysql://IP:3306/db?serverTimezone=UTC&amp;autoReconnect=true
        UserName    = user
        Password    = password
        JtaManaged  = true
    </Resource>
</resources>

JdbcDriver=com.mysql.jdbc.Driver
JdbcUrl=jdbc:mysql://IP:3306/db?serverTimezone=UTC&自动重新连接=真
用户名=用户
密码=密码
JtaManaged=true
请注意,标签
与问题中给出的
不同。这应该适用于默认的TomEE环境。另见:RMANIBUCAU的评论


希望有帮助。

您可以使用
WEB-INF/resources.xml
定义一个或多个数据源,也可以使用
/conf
文件夹中的
tomee.xml
文件,如tomee项目文档的中所述:

可以通过/conf/tomee.xml文件或WEB-INF/resources.xml文件中的xml声明数据源

但是,
resources.xml
的语法与容器范围的定义略有不同。对于与web应用程序捆绑在一起的
resources.xml
,其格式应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <Resource id="mysql_ds" type="javax.sql.DataSource">
        JdbcDriver  = com.mysql.jdbc.Driver
        JdbcUrl     = jdbc:mysql://IP:3306/db?serverTimezone=UTC&amp;autoReconnect=true
        UserName    = user
        Password    = password
        JtaManaged  = true
    </Resource>
</resources>

JdbcDriver=com.mysql.jdbc.Driver
JdbcUrl=jdbc:mysql://IP:3306/db?serverTimezone=UTC&自动重新连接=真
用户名=用户
密码=密码
JtaManaged=true
请注意,标签
与问题中给出的
不同。这应该适用于默认的TomEE环境。另见:RMANIBUCAU的评论


希望有帮助。

请注意,如果发现冲突的定义,资源将在上下文中解决(使用类加载器),因此您仍然可以在两个不同的Web应用程序中部署两个冲突的资源。@RMANIBUCAU对于这种情况,这是一个很好的提示/说明,thx。请注意,如果发现冲突的定义,资源将在上下文中解析(使用类加载器),因此您仍然可以在两个不同的Web应用程序中部署两个冲突的资源。@RMANIBUCAU对于这种情况,这是一个很好的提示/说明,thx。