我在Netbeans 11中有一个Web应用程序(安装了JDK 8),我添加了mysql-connector-java-8.0.15.jar的依赖项,并从我的DB生成了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();
为了完整性,我在编译阶段没有错误!
有人知道怎么解决吗?
3条答案
按热度按时间lnvxswe21#
经过一番研究,我用这种方法解决了这个问题
1.从similar problem中获得灵感,我在Glassfish管理控制台中按照this后面的devmind的建议创建了连接池和资源。
1.我删除了
mysql-connector-java-8.x.x.jar
作为依赖项,并添加了mysql-connector-java-5.x.x.jar
1.在
the persistence.xml
中,我为标记jta-data-source
设置了JNDI名称而且一切都如预期的那样!
我不知道如何让一切都与最新版本的MySQL连接器,但至少,在这种方式下,我的Web应用程序的工作。
**EDIT:**对于mysql-connector的最新版本,因为devmind建议您应该将MysqlDataSource:从
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
到com.mysql.cj.jdbc.MysqlDataSource
,如报道的here。我希望它对其他人有用。
nqwrtyyt2#
尝试将JDBC驱动程序jar放到Glassfish域的
lib
文件夹中。我通常将它们存储在lib/ext
中。j8yoct9x3#
我不记得我是否从其他帖子或Glassfish用户手册中得到了这些信息,但它为我解决了提到的问题,即:类别名称错误或类别路径未设定Glassfish 5或Payara服务器错误-我目前使用的是Payara Server 5.2022.3。将最新的连接器j加入您的服务器/your_domain;在我的例子中,它是domain 1,这是我'cd'到/bin之后的脚本:C:\Program Files\payara-web-5.2022.3\payara5\bin〉asadmin添加库--键入应用程序“C:\Program Files(x86)\MySQL\连接器J 8.0\mysql-connector-j-8.0.31.jar”,其中引用的字符串是我保存连接器J的路径。