mysql - 如何在 TomEE 中的 java 应用程序中连接 MySQL 数据库

标签 mysql jakarta-ee entitymanager persistence.xml apache-tomee

我正在开发一个 Web 应用程序(Eclipse、TomEE),并尝试与 MySQL 数据库进行通信:

  • 我已经创建了数据库
  • 我已经包含了 EclipseLink 和 MySQL-Driver
  • 连接正常(我尝试了 ping,结果正常)

当我尝试保留数据时出现此错误

Grave: could not reopen database
org.hsqldb.HsqlException: Database lock acquisition failure: lockFile:org.hsqldb.persist.LockFile@81911f7a[file =C:\Program Files\eclipse\data\hsqldb\hsqldb.lck, exists=false, locked=false, valid=false, ] method: openRAF reason: java.io.FileNotFoundException: C:\Program Files\eclipse\data\hsqldb\hsqldb.lck (Le chemin d’accès spécifié est introuvable)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.persist.LockFile.newLockFileLock(Unknown Source)
    at org.hsqldb.persist.Logger.acquireLock(Unknown Source)
    at org.hsqldb.persist.Logger.open(Unknown Source)
    at org.hsqldb.Database.reopen(Unknown Source)
    at org.hsqldb.Database.open(Unknown Source)
    at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
    at org.hsqldb.DatabaseManager.newSession(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
    ...

我不明白为什么它是关于 hsqldb 而我已经配置了 MySQL

我在 src/META-INF 中有 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="UP" transaction-type="JTA"> 
        <class>jpa.User</class>
</persistence-unit>
</persistence>

我这样调用entityManager:

@Stateless
public class UserFacade extends AbstractFacade<User> implements UserFacadeLocal {
    @PersistenceContext (unitName="UP")
    private EntityManager em;
    ...
}

最佳答案

您需要在 tomee.xml ( http://tomee.apache.org/common-datasource-configurations.html ) 中定义数据源,并将您在 persistence.xml 中的 tomee.xml (id) 上定义的名称指定为 jta-data-source。

关于mysql - 如何在 TomEE 中的 java 应用程序中连接 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947418/

相关文章:

mysql - 应用程序在使用 MySQL 服务器时在 Mac OS 上出现通信链接故障

java - 我是否需要为列设置自动增量才能生成 identit 工作

jakarta-ee - maven archetype j2ee-simple 生成一个失败的项目

unit-testing - 测试中的 Symfony2 实体管理器

mysql - SQL 计算一段时间内的累计值

mysql - 使用不同的表计算行

java - Spring 3 SimpleMappingExceptionResolver warnLogCategory log4j

java - 从 Mule 中的 VM 队列读取以在 EmailingService 中发送电子邮件

java - 在同一 session 中更改实体管理器数据源

java - 当我尝试获取对象列表时出现 NullPointer