2017-09-08 2 views
0

Ich habe daran gearbeitet, unsere Anwendung von JBoss AS 6 nach Wildfly 10 zu verschieben. Das Hauptproblem, an dem ich feststecke, ist, dass der EntityManager nicht in den EJB injiziert wird. Ich habe das schon eine Weile erforscht und versuche alles, was ich finde, aber nichts hilft.EntityManager ist null, wenn in WildFly injiziert 10 EJB

Ich habe keine einfache Anwendung, um das Problem noch neu zu erstellen, aber hier sind einige Details und Codeschnipsel.

Wir implementieren mithilfe einer SAR-Datei. Dies ist eine Spring Framework-Anwendung. Unser Second-Level-Cache ist vorerst ausgeschaltet. Das ist ein anderes Problem, das ich angehen muss.

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence 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 
       http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
     version="1.0"> 
    <persistence-unit name="IpsDb" transaction-type="JTA"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
    <jta-data-source>java:jboss/datasources/HarmonyServerDS</jta-data-source> 
    <jar-file>../harmonyserver-model.jar</jar-file> 
    <properties> 
     <!-- pessimistic lock timeout in milliseconds (Integer or String), this is a hint used by Hibernate but requires support by your underlying database. --> 
     <property name="javax.persistence.lock.timeout" value="15000"/> 
     <!-- query timeout in milliseconds (Integer or String), this is a hint used by Hibernate but requires support by your underlying database --> 
     <property name="javax.persistence.query.timeout" value="15000"/> 
     <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform" /> 
     <property name="hibernate.cache.use_query_cache" value="false"/> 
     <property name="hibernate.cache.use_second_level_cache" value="false"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

Beginn der Datenquelle von Standalone-full.xml:

<datasource jta="true" jndi-name="java:jboss/datasources/HarmonyServerDS" pool-name="HarmonyServerDS" enabled="true" use-java-context="true" spy="false" use-ccm="true" connectable="false"> 

Von der EJB-Klasse (Das ist die wichtige Teile sind aber nicht die gesamte Code aus die Klasse):

Die Protokollierung am Ende dieses Ausschnitts zeigt, dass die EntitätMgr und ent ityMgrFactory ist null.

Gibt es noch etwas, das ich vermisse? Oder irgendetwas anderes, das ich zeigen könnte, wäre hilfreich?

Antwort

0

Ich habe das Problem gefunden. Ich musste JNDI-Bean-Namen von einem alten Format in das neue Format ändern. Ich hatte einige davon geändert, aber nicht den für diese Bohne. Die Bean wurde nicht aus dem Kontext gefunden, sodass im Code eine neue erstellt wurde. Wir haben diesen Code nur für Testfälle, aber ich habe nicht bemerkt, dass es das war, was er gemacht hat. Jetzt, da ich den JNDI-Namen korrigiert habe, wird die Bean gefunden und der EntityMgr wird injiziert.

Verwandte Themen