我在Netbeans 11(安装了JDK 8)中有一个Web应用程序,我添加了mysql-connector-java-8.0.15.jar的依赖项,并且已经从数据库中生成了JPA。
构建时没有错误。
但是当我尝试运行它时,Glassfish服务器会给我这些errors (pastebin link)。
这是我相应设置的persistence.xml,是:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="InvoicesPU" transaction-type="JTA">
<jta-data-source>java:app/Invoices</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
在我的java类中,我通过以下方式调用它:
@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {
@PersistenceContext(unitName = "InvoicesPU")
EntityManager em;
...
em.someMethod();
出于完整性考虑,我在编译阶段没有错误!
有人知道如何解决吗?
答案 0 :(得分:0)
尝试将JDBC驱动程序jar放入Glassfish域的lib
文件夹中。我通常将它们存储在lib/ext
中。
答案 1 :(得分:0)
经过研究,我以这种方式解决了这个问题:
从similar problem得到启发,我按照devmind在this之后的建议在Glassfish管理控制台中创建了连接池和资源。
我删除了mysql-connector-java-8.x.x.jar
作为依赖项,并添加了mysql-connector-java-5.x.x.jar
在the persistence.xml
中,我为标签jta-data-source
设置了JNDI名称
一切都按预期进行!
我不知道如何使用最新版本的MySQL连接器使一切正常工作,但至少以这种方式,我的Web应用程序可以工作。
编辑:,用于最新版本的mysql-connector,如devmind建议您将MysqlDataSource:从com.mysql.jdbc.jdbc2.optional.MysqlDataSource
设置为com.mysql.cj.jdbc.MysqlDataSource
,如报告{{3 }}。
我希望它对其他人有用。