EJB NoSuchEJBException Zugriff auf Entity

G

Gast2

Gast
Hallo zusammen,

ich bekomme eine Exception wenn ich in meinem DAO auf den EntityManager zugreife.
Ich benutze als DI Framework, das CDI und EJB3.0
Java:
@Stateful
public class MyDaoImpl implements MyDao{

	@PersistenceContext(type=PersistenceContextType.EXTENDED)
	private EntityManager entityManager;
	
	@Override
	public MyEntity findMyEntityById(long id) {
		return entityManager.find(MyEntity .class, id);
	}
	
}

Java:
Caused by: javax.ejb.NoSuchEJBException: Could not find stateful bean: a3b3o6g-dq45hs-gmqdhiot-1-gmqds9hv-dm
	at org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:494) [:1.7.17]
	at org.jboss.ejb3.cache.simple.SimpleStatefulCache.get(SimpleStatefulCache.java:445) [:1.7.17]
	at org.jboss.ejb3.cache.simple.SimpleStatefulCache.remove(SimpleStatefulCache.java:557) [:1.7.17]
	at org.jboss.ejb3.stateful.StatefulContainer.destroySession(StatefulContainer.java:1353) [:1.7.17]
	at org.jboss.ejb3.endpoint.deployers.impl.EndpointImpl.destroySession(EndpointImpl.java:61) [:0.1.4]
	at org.jboss.weld.integration.ejb.JBossSessionObjectReference.remove(JBossSessionObjectReference.java:81) [:6.0.0.Final]
	at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:107) [:6.0.0.Final]
	at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:62) [:6.0.0.Final]
	at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:125) [:6.0.0.Final]
	at com.enbw.pricepilot.basis.service.org$jboss$weld$bean-jboss$classloader:id="vfs:$$$D:$JBoss$jboss-6$0$0$Final$server$default$deploy$xPP_Prototyp$war"-SessionBean-BuendelstelleDAO_$$_WeldProxy.destroy(org$jboss$weld$bean-jboss$classloader:id="vfs:$$$D:$JBoss$jboss-6$0$0$Final$server$default$deploy$xPP_Prototyp$war"-SessionBean-BuendelstelleDAO_$$_WeldProxy.java)
	at org.jboss.weld.bean.SessionBean.destroy(SessionBean.java:384) [:6.0.0.Final]
	at org.jboss.weld.context.ForwardingContextual.destroy(ForwardingContextual.java:34) [:6.0.0.Final]
	at org.jboss.weld.context.CreationalContextImpl.destroy(CreationalContextImpl.java:100) [:6.0.0.Final]
	at org.jboss.weld.context.CreationalContextImpl.release(CreationalContextImpl.java:90) [:6.0.0.Final]
	at org.jboss.weld.integration.ejb.SessionBeanInterceptor.preDestroy(SessionBeanInterceptor.java:112) [:6.0.0.Final]
	... 232 more

Mein Entity ist mit JPA Annotationen gemacht. Kennt jemand die Fehlernachricht?
 
G

Gast2

Gast
Meine Vermutung ist,dass die persistence.xml nicht eingelesen wird, weil ich folgende Ausgabe im log finde
Java:
09:24:35,892 INFO  [StdSchedulerFactory] Quartz scheduler 'JBossQuartzScheduler' initialized from an externally opened InputStream.
09:24:35,892 INFO  [StdSchedulerFactory] Quartz scheduler version: 1.8.3
09:24:35,892 INFO  [QuartzScheduler] Scheduler JBossQuartzScheduler_$_NON_CLUSTERED started.
09:24:37,017 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=DefaultDS' to JNDI name 'java:DefaultDS'
09:24:37,017 INFO  [PersistenceUnitDeployment] Starting persistence unit persistence.unit:unitName=jboss-ejb3-timerservice-mk2.jar#timerdb
09:24:38,470 INFO  [Version] Hibernate Commons Annotations 3.2.0.Final
09:24:38,501 INFO  [Environment] Hibernate 3.6.0.Final
09:24:38,517 INFO  [Environment] hibernate.properties not found
09:24:38,517 INFO  [Environment] Bytecode provider name : javassist
09:24:38,532 INFO  [Environment] using JDK 1.4 java.sql.Timestamp handling
09:24:38,876 INFO  [Version] Hibernate EntityManager 3.6.0.Final
09:24:38,986 INFO  [Ejb3Configuration] Processing PersistenceUnitInfo [
	name: timerdb
	...]

hibernate.properties not found hört sich nicht gut an. Und die persistence.unit klingt auch komisch

Meine xml
[XML]
<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_2_0.xsd"
version="2.0">
<persistence-unit name="manager" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/DefaultDS</jta-data-source>
<class>test.myEntity</class>

<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="pwd" />
<property name="javax.persistence.jdbc.url" value="jdbc:eek:racle:thin:" />

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
<property name="hibernate.session_factory_name" value="java:hibernate/SessionFactory" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>

</persistence-unit>
</persistence>
[/XML]

Wenn ich mir die Properties der EntityManagerFactory ausgeben lasse sehe ich auch folgende Ausgabe
Code:
hibernate.hbm2ddl.auto	update
mhm? Muss ich beim JBoss noch was einstellen, das die Datei einliest?

Liegt bei mir unter WebContent-->META-INF
 

mvitz

Top Contributor
Eigentlich gehört die in einen Source Folder z.B. "src" und da in den Ordner META-INF.

Ansonsten sind DAOs eigentlich Stateless.
 
G

Gast2

Gast
Eigentlich gehört die in einen Source Folder z.B. "src" und da in den Ordner META-INF.

Ansonsten sind DAOs eigentlich Stateless.

Okay probier ich es mal in dem src ordner

Wenn ich den EntityManager EXTENDED in das DAO injecte muss der doch glaub Stateful sein sonst bekomm ich ein error:
Code:
It is illegal to inject an EXTENDED PC into something other than a SFSB

Seam Framework - Can't use PersistenceContextType.EXTENDED
 
G

Gast2

Gast
Ok, das hatte ich übersehen. Hab ich so bisher auch noch nirgends gesehen :D

Ja das ist für lang laufende Session da ist das Transaktion verhalten anders.

Okay wie aussieht liest die xml nun ein =)...

Aber ich glaub ich hab den Unterschied zwischen RESOURCE_LOCALund JTA nicht ganz verstanden.
Wenn ich JTA verwende werden die Server properties über eine xml eingelesen und meine Transaktion werden darüber gehandelt. Versteh ich nicht so ganz wie das funktioniert.
Das heißt ich benutz erst einmal "RESOURCE_LOCAL" und bekomm ich immer folgende Exception
Code:
  Deployment "persistence.unit:unitName=xPP_Prototyp.war#manager" is in error due to the following reason(s): java.lang.RuntimeException: Specification violation [EJB3 JPA 6.2.1.2] - You have not defined a non-jta-data-source for a RESOURCE_LOCAL enabled persistence context named: manager

[XML]
<persistence-unit name="PricePilot" transaction-type="RESOURCE_LOCAL">
<!-- <provider>org.hibernate.ejb.HibernatePersistence</provider> -->
<!-- <jta-data-source>java:/ManagerDS</jta-data-source> -->
<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" />
<property name="hibernate.session_factory_name" value="java:hibernate/SessionFactory" />
<property name="hibernate.hbm2ddl.auto" value="validate" />
</properties>

</persistence-unit>
</persistence>
[/XML]

Und wenn ich JTA verwenden will muss ich im JBoss eine ManagerDS.xml anlegen?
 
G

Gast2

Gast
Okay habs jetzt über die XML gemacht und es sieht immer besser aus ;)
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JPA Zugriff auf (externe) Datenbank auf dem Server Data Tier 8
F Glassfish 3 DB zugriff Data Tier 2
M Verständnisproblem mit Get und Set und lesendem Zugriff Data Tier 3
OnDemand Vorgehen DB /Entity Data Tier 2
A Entity Manager Data Tier 4
erdmann Entity-Services ein Antipattern? Data Tier 3
S JPA Cascade: Entity nur speichern, wenn sie nicht schon existiert Data Tier 0
E JPA Session.delete einer Entity wird nicht ausgeführt Data Tier 2
G JPA: Entity Klasse @JoinColumns Problem Data Tier 2
S [JPA-Neuling] - JPA 2 und dynamische Entity-Typen/DB-Schemata Data Tier 11
Landei JPA - Entity mit Maps Data Tier 2
H [Hibernate] Unknown Entity Data Tier 3
G JPA/ Eclipselink: (Alte) Kopie einer Entity? Data Tier 6
J Servlet mit eigenem Entity-Manager innerhalb von Seam-Projekt Data Tier 3
lumo Hibernate - entity class not found Data Tier 5
J synchronisierte Zugriffe auf die gleiche Entity (JPA) Data Tier 19
LCS Entity mit variablen Tabellennamen Data Tier 3
D jpq entity life cycle - insert, update... Data Tier 5
A @org.hibernate.annotations.Entity(dynamicUpdate=true, optimisticLock=OptimisticLockType.ALL) Data Tier 2
T [JPA] Update Entity in Entity Data Tier 2
byte Hibernate: Criteria & SubQuery - Unknown Entity null Data Tier 1
Final_Striker EJB3: Entity nach persist wiederfinden Data Tier 8
N Entity-Object muss auf Client aktualisiert werden Data Tier 13
0 org.hibernate.MappingException: Unknown entity Data Tier 8
K Hibernate: Unknown entity Data Tier 7

Ähnliche Java Themen

Neue Themen


Oben