jpajakarta-eenetbeansglassfishserver-error

Class name is wrong or classpath is not set ERROR in Netbeans with Glassfish 5 server and JPAs


I have a Web Application in Netbeans 11 (with JDK 8 installed), I have added the dependencies for mysql-connector-java-8.0.15.jar and I have generated the JPAs from my DB.

No error while building it.

But when I try to run it, the Glassfish server give me these errors (pastebin link).

This is my persistence.xml, that I set accordingly, is:

<?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>

And in my java class I call it by:

@Stateless
public class InvoiceEJB implements InvoiceEJBLocal {

    @PersistenceContext(unitName = "InvoicesPU")
    EntityManager em;
    ...
    em.someMethod();

For completeness, I have no error during the compilation phase!

Anyone know how to solve it?


Solution

  • After some research I solved it in this way:

    1. taking inspiration from a similar problem, I created the Connection Pool and the Resource in the Glassfish Admin Console as suggested by devmind following this.

    2. I removed as dependency the mysql-connector-java-8.x.x.jar and I added the mysql-connector-java-5.x.x.jar

    3. In the persistence.xml I set the JNDI name for the tag jta-data-source

    And everything goes as expected!

    I don't know how to make everything work with the latest version of the MySQL Connector but, at least, in this way my Web Application works.

    EDIT: for latests versions of mysql-connector, as devmind has suggest you should set MysqlDataSource: from com.mysql.jdbc.jdbc2.optional.MysqlDataSource to com.mysql.cj.jdbc.MysqlDataSource as reported here.

    I hope it's useful to someone else.