Java Persistence Api - problema para começar

Olá pessoal, estou começando a estudar a JPA e como todo bom estudante que tem dúvida, apresento este problema a vcs .

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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 persistence_1_0.xsd">
  <persistence-unit name="ctx">
    <class>
          proc.Processo
      </class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="toplink.jdbc.url" value="jdbc:firebirdsql:172.24.5.2:C:/IPM/banco/ipm.gdb"/>
      <property name="toplink.jdbc.user" value="sysdba"/>
      <property name="toplink.jdbc.driver" value="org.firebirdsql.jdbc.FBDriver"/>
      <property name="toplink.jdbc.password" value="masterkey"/>
      <property name="toplink.logging.level" value="INFO" />
    </properties>
  </persistence-unit>
  <class>proc.Processo</class>
  <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
</persistence>

Arquivo CLiente.java , método main:

public static void main(String[] args) {               
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("ctx"); /*Aqui ocorre uma exceção do tipo NullPoitnterException*/
        EntityManager em = factory.createEntityManager();     
       ...    
    }

Eis a exceção:

java.lang.NullPointerException
        at oracle.toplink.essentials.internal.ejb.cmp3.xml.parser.PersistenceContentHandler.endElement(PersistenceContentHandler.java:150)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:818)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
        at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceXML(PersistenceUnitProcessor.java:136)
        at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processPersistenceArchive(PersistenceUnitProcessor.java:84)
        at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.getPersistenceUnits(PersistenceUnitProcessor.java:74)
        at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initPersistenceUnits(JavaSECMPInitializer.java:223)
        at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initialize(JavaSECMPInitializer.java:242)
        at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initializeFromMain(JavaSECMPInitializer.java:278)
        at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.getJavaSECMPInitializer(JavaSECMPInitializer.java:81)
        at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:119)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
        at sys.ShowMainMenu.testarPersistencia(ShowMainMenu.java:163)
        at sys.ShowMainMenu.getDataSource(ShowMainMenu.java:59)
        at sys.ShowMainMenu.criticaUsuario(ShowMainMenu.java:98)
        at sys.ShowMainMenu.Executar(ShowMainMenu.java:42)
        at rh.ServidorServlet.processRequest(ServidorServlet.java:70)
        at rh.ServidorServlet.doPost(ServidorServlet.java:118)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

Como podem ver, estou usando os pacotes TopLink Essentials da Oracle , já tentei
glassfish-persistence-installer-v2-b16 e glassfish-persistence-installer-v2-b38, o resultado é o mesmo.

Suspeitei de algum bug no pacote… se existe alguma versão estável ou alguma correção , por favor estou no aguardo … ou se o problema não for esse , pode estar faltando algo nas minhas configurações. Por favor me ajudem , obrigado.

Wagner

Wagner,

você não pode colocar seu provider fora da tag persistence-unit.

Tente assim:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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 persistence_1_0.xsd">
  <persistence-unit name="ctx">
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <class>
          proc.Processo
      </class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="toplink.jdbc.url" value="jdbc:firebirdsql:172.24.5.2:C:/IPM/banco/ipm.gdb"/>
      <property name="toplink.jdbc.user" value="sysdba"/>
      <property name="toplink.jdbc.driver" value="org.firebirdsql.jdbc.FBDriver"/>
      <property name="toplink.jdbc.password" value="masterkey"/>
      <property name="toplink.logging.level" value="INFO" />
    </properties>
  </persistence-unit>
</persistence> 

Cara, valeu mesmo , brigadão. Só houve um probleminha, é que faltava mais uma cláusula no arquivo persistence.xml, era essa:

..
<property name="toplink.target-database" value="oracle.toplink.essentials.platform.database.DerbyPlatform"/>
...

Como meu teste inicial era com o Firebird , percebi que não existe um objeto do tipo “oracle.toplink.essentials.platform.database.FirebirdPlatform”
Então eu fiz o teste com o Derby e funcionou perfeitamente.

Wagner

Beleza então! :joia: