JBoss,Axis2,Hibernate/JPA,Oracle - EntityManager Problem

Status
Nicht offen für weitere Antworten.
W

Wili.Firulais

Gast
Hallo,

Ich bekomme die Fehlermeldung:
"No Persistence provider for EntityManager named ..."

Hab schon das Internet zu dem Thema dursucht aber nichts hat geholfen.
Würde mich (nach zwei Tagen herumprobieren) über weitere Ideen, Links, Anregungen, Referenzen und natürlich Lösungen freuen.

* Situation
Axis2 WebService Implementierung mit JPA/Hibernate Zugriff (ohne Java EE) auf eine Oracle 10g Datenbank.

- JBoss 4.0.3SP1
- AXIS 2 (axis2.war)
- Hibernate 3 (antlr-2.7.6.jar, asm.jar, cglib-2.1.3.jar, commons-collections-2.1.1.jar, commons-collections-2.1.1.jar, dom4j-1.6.1.jar, ehcache-1.2.3.jar, ejb3-persistence.jar, hibernate3.jar, hibernate-annotations.jar, hibernate-commons-annotations.jar, hibernate-entitymanager.jar, javassist.jar, jboss-archive-browsing.jar, jta.jar)
- Oracle 10 (dms.jar, ojdbc5dms.jar, ojdl.jar, orai18n.jar)

Wenn jemand Tipps und Erfahrugswerte mit diesem Setup hat wo die .jar Dateien am besten zu plazieren sind wäre echt toll. Als "standalone" funktioniert das POJO (main) welches als WebService für Axis2 definiert wurde. Nach deployment als .aar auf JBoss erhalte ich nach testen (soapUI) nur die Meldung "No Persistence provider for EntityManager named ..."

Vielen dank für alle Rückmeldungen,
Willi



* Vorschläge die mir leider nicht weitergeholfen haben:
Hibernate JPA problem:
“No Persistence provider for EntityManager named …” http://forum.java.sun.com/thread.jspa?threadID=5169272&messageID=9649764

S: There may be a mismatch in your source and configuration. Just make sure you keep those two in sync if you change them. The generated persistence.xml file has the following entry
<persistence-unit name="jee5PU" transaction-type="RESOURCE_LOCAL">

But the generated EntityManagerHelper.java file has this entry
emf = Persistence.createEntityManagerFactory("jee5 pu");

S:
http://www.myeclipseide.com/PNphpBB2-viewtopic-t-19323-sid-298793bf1aea4950e21af1f405f7d14a.html
http://forum.java.sun.com/thread.jspa?threadID=5169272

S: add ejb3-persistence.jar to classpath, as it is Hibernate's wrapper class for the Java persistence API. Note that the above error message also may occurs if hibernate-entitymanager.jar is missing from the classpath.
http://dewarim.de/wms/error/no_persistence_provider_for_entitymanager


S: Check the provider you are using. The problem is your persistence provide is invalid... it should be something like:
<provider>mysql.toplink.essentials.PersistenceProvider</provider>
<provider> oracle.toplink.essentials.PersistenceProvider </provider>
http://www.myeclipseide.com/PNphpBB2-viewtopic-t-17323-sid-08e82e38591eab877e20737ad0e1fc5a.html

S: The META-INF dir under the /src dir is where it needs to be, the classloader doesn't have any access to the META-INF dir under the web project, that is for deployment descriptors for the app server, not for the persistence.xml file (?)
http://www.myeclipseide.com/PNphpBB2-viewtopic-t-17323-sid-08e82e38591eab877e20737ad0e1fc5a.html

S: Your persistence file has to be in META-INF and not directly in the class path. Are you trying to run your code outside of a web container by chance?

The META-INF dir under the /src dir is where it needs to be, the classloader doesn't have any access to the META-INF dir under the web project, that is for deployment descriptors for the app server, not for the persistence.xml file.

S: if this works on your development environment but non the server then check if all needed hibernate libraries are available on the server. If not deploy them to the server/lib or to your service/lib.
 
G

Guest

Gast
Wie die Fehlermeldung sagt, fehlt bei dir in persistence.xml der Provider. Bei Hibernate ist es org.hibernate.ejb.HibernatePersistence
Code:
<persistence-unit name="jee5PU" transaction-type="RESOURCE_LOCAL">
   <provider>org.hibernate.ejb.HibernatePersistence</provider>
   ...
 
W

Willi.Firulais

Gast
Danke "Gast" für den Lösungsansatz. Die persistence.xml ist so definiert und funktioniert ohne Axis auch wunderbar.

Sobald ich es als .aar nach Axis2 deploye bekomme ich den Fehler:
"No Persistence provider for EntityManager named ..."

Dürfte was mit den Class Loader zu tun haben, da Axis bereits eine .war ist. Dort ist zwar vorgesehen Bibliotheken im .aar in ein lib Verzeichnis zu legen - was aber hier anscheinend nicht funktioniert.

Hat jemand vielleicht ein funktionierendes Beispiel mit den Technolgie-Mix: JBoss, Axis2, Hibernate/JPA (ohne EJB), Oralce

Vielen Danke für jede Hilfe, denn anscheinend gibts im ganzen Internet nix dazu.
 
W

Willi.Firulais

Gast
Here is the (not working) example (consits of 4 files).

Das Entwicklungsverzeichnis:
src/company/customer/service/CableService.java
src/company/customer/model/Cable.java
src/META-INF/services.xml
src/META-INF/persistence.xml

Das Deployment Verzeichnis:
classes/company/customer/service/CableService.java
classes/company/customer/model/Cable.java
classes/lib
classes/META-INF/services.xml
classes/META-INF/persistence.xml
classes/META-INF/MANIFEST.MF

src/company/customer/service/CableService.java:
Code:
package company.customer.service;

import company.customer.model.Cable;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;

public class CableService {

    public CableService() {
    }

    public String getCable(Long id) {
      EntityManagerFactory emf = Persistence.createEntityManagerFactory("jee5PU");
      EntityManager em = emf.createEntityManager();

      Cable cable1 = em.find(Cable.class, id);
      return cable1;
    }
}

Das POJO (ohne die kompletten Attribute und getters darzustellen).

src/company/customer/model/Cable.java
Code:
package company.customer.model;

import java.io.Serializable;

import java.util.Date;
import javax.persistence.*;

@Entity
@Table(name="TAB_CABLE")
public class Cable implements Serializable{

    private Long syst_id;

    public Cable() {}

    @Id
    public Long getSyst_id() { return this.syst_id; }
    public void setSyst_id(Long syst_id) { this.syst_id=syst_id; }
}

src/META-INF/persistence.xml
Code:
<?xml version="1.0" encoding="windows-1252" ?>
<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_1_0.xsd"
             version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
  <persistence-unit name="jee5PU">
     <provider>org.hibernate.ejb.HibernatePersistence</provider>
     <class>iqsoft.tevis.model.Cable</class>
     <properties>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
            <property name="hibernate.connection.username" value="scott"/>
            <property name="hibernate.connection.password" value="tiger"/>

            <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
            
            <property name="hibernate.show_sql" value="true"/>
     </properties>
 </persistence-unit>
</persistence>

src/META-INF/services.xml
Code:
<service name="CableService">
    <description>
        Sample service to demonstrate Axis2 with Hibernate
    </description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
                         class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
                         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    <parameter name="ServiceClass" locked="false">company.customer.service.CableService</parameter>
</service>

MANIFEST.MF
Code:
Manifest-Version: 1.0
 
G

Guest

Gast
Was passiert, wenn du die Beans (Session und EntityBeans) in einem Jar, die Services in ein Aar, Web-Sachen in ein War alles zusammen in ein EAR verpackst und deployest?

Meine Vermutung ist, dass das classes Verzeichnis in dem aar Archiv nicht nach der persistence.xml dursucht
wird. Eine Trennung der Präsentations-, Service- und Persistence-Schicht ist sowieso immer ratsam.
In deinen Services kannst du über lokale Interfaces auf die Facade(n) der Bussiness- und Persistenzschicht
zugreifen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P OSGi Bundle in JBoss zum laufen bringen Allgemeine Java-Themen 0
T Remote JBoss will nicht deployed Allgemeine Java-Themen 4
I Java EE und JBoss Allgemeine Java-Themen 9
M JBoss macht Probleme Allgemeine Java-Themen 6
M ein paar fragen über JBoss und Catalina Allgemeine Java-Themen 7
M Webservice mit Axis2 und Eclipse - Error Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
S org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: right near Allgemeine Java-Themen 6
P Hibernate Proxy Allgemeine Java-Themen 1
C Hibernate EJB JTA Allgemeine Java-Themen 4
M JAXB Reimport zu Hibernate DB -> Exception Allgemeine Java-Themen 3
Shoox Hibernate / JAXB für Schnittstellen Allgemeine Java-Themen 4
Jay_030 Guice + Hibernate = Probleme? Allgemeine Java-Themen 2
G Hibernate search (Lucene) - Index wird nicht rechtzeitig erzeugt? Allgemeine Java-Themen 2
H Hibernate: @OneToOne Beziehung Allgemeine Java-Themen 4
N Hibernate und Fehlermeldung Allgemeine Java-Themen 18
neurox Tutorial: Hibernate mit MySQL (erste Schritte) Allgemeine Java-Themen 34
P Hibernate oder Java Persistence API? Allgemeine Java-Themen 3
A Spring und Hibernate Allgemeine Java-Themen 2
MQue log4j mit hibernate Allgemeine Java-Themen 3
F Hibernate speichern - Null Allgemeine Java-Themen 5
T Wie Hibernate im Tomcat installieren? Allgemeine Java-Themen 2
M Hibernate frage zur Verbindung Allgemeine Java-Themen 3
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
G Obfuscator und Hibernate! Allgemeine Java-Themen 5
T Hibernate Criteria Queries - Abfragen von Collection-Members Allgemeine Java-Themen 2
J Hibernate & Java Allgemeine Java-Themen 4
A Hibernate und Swing Allgemeine Java-Themen 2
G Hibernate speichert Daten nur während Session in HSQL-DB Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben