java - TomEE 指向错误的数据源

标签 java sql jdbc persistence apache-tomee

我正在使用单个 TomEE 实例来部署 2 个 Web 应用程序。两个应用程序使用不同的数据库和不同的实体。

应用程序 2 集成到应用程序 1 中,因此我在运行时随时需要这两个架构。

我在 tomee.xml 中配置了两个 DataSources,如下所示:

<tomee>
  <Resource id="testDBPool" type="DataSource">
    jdbcDriver = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://localhost:3306/testDB"
    username = "admin"
    password = "admin"
  </Resource>
</tomee>

<tomee>
  <Resource id="testDBPool2" type="DataSource">
    jdbcDriver = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://localhost:3306/testDB2"
    username = "admin"
    password = "admin"
  </Resource>
</tomee>

在应用程序 1 中,我使用这个 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
  <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   <persistence-unit name="testDBPool" transaction-type="JTA">   
      <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
      <jta-data-source>jdbc/testDBPool</jta-data-source>
   </persistence-unit>
 </persistence>

在应用程序 2 中,我使用这个 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">   
    <persistence-unit name="testDBPool2" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/testDBPool2</jta-data-source>
     </persistence-unit>
 </persistence>

当我尝试运行应用程序时,它抛出 testDB.table1 不存在,而实际上 table1 存在于 testDB2 模式中不存在在 testDB 中,我不明白为什么它指向错误的架构?

最佳答案

在我看来,您的 Application2 的 persistence.xml 从未加载过。这并不奇怪,因为已经有一个 presistence.xml 正在为上下文运行。

尝试将应用程序 2 中的条目添加到应用程序 1 中,看看是否有效。

或者看看这个问题:How can I make a JPA application access different databases?看看是否有帮助。

如果两者都不起作用,请将 Application2 与 Application1 解开并在不同的上下文中运行它们,以便每个应用程序都有自己的 persistence.xml 运行,然后再次调试。

关于java - TomEE 指向错误的数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24734924/

相关文章:

sql - 了解 Rails + postgresql 中的随机排序

java - JDBC MySQL 仅在测试类中工作

Java Stream 映射到多个属性

java - 在 RabbitMQ 中检索队列的参数和属性

php - 在选择查询中使用选择查询?

java - Csv Jdbc : ResultSet. getRow() 不受支持

java - 在 Java 中禁用 Microsoft dBase 驱动程序的自动提交

java - 如何用java编写代码将明文转换为十六进制?

java - "cannot find symbol"错误

sql - 如何在没有完整外连接的情况下进行完整外连接