Arndt Schönbergs Weblog

Donnerstag Sep 13, 2018

Spooky Exceptions (11) - ... javax.ejb.EJBException: WFLYEJB0442: Unexpected Error

Umgebung

  • Wildfly 13
  • EE7
  • Eclipselink

Situation

Bei dem Aufruf einer JPA Query wird folgende Exception geworfen
 
   ... javax.ejb.EJBException: WFLYEJB0442: Unexpected Error
   ...
   Caused by: java.lang.StackOverflowError
   at org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getRoot(AbstractExpression.java:530)
   at org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getRoot(AbstractExpression.java:530)
   at org.eclipse.persistence.jpa.jpql.parser.AbstractExpression.getRoot(AbstractExpression.java:530)
    ...

Lösung

Ursache dieser Exception ist eine lange Kette von WHERE Bedingungen (ca 2250) in einer JPQL Abfrage, die über Parameter befüllt werden. Es scheint hier Grenzen in der Verarbeitungsfähigkeit zu geben. Solche Anfragen müssen in Einzelanfragen aufgebrochen oder umformuliert werden.

Freitag Jul 13, 2018

Spooky Exceptions (10) - An exception occurred while creating a query in EntityManager

Umgebung

  • Wildfly 13
  • EE7
  • Eclipselink

Situation

Bei dem Aufruf einer JPA Query kommt eine Exception
 
  2018-06-22 12:45:43,615 ERROR [org.jboss.as.ejb3.invocation] (default task-1) WFLYEJB0034: 
  EJB Invocation failed on component DataPrivacyStatementAcceptanceFacade
  for method public abstract de.schoeso.festival.ejb.mde.DataPrivacyStatementAcceptanceList 
  de.schoeso.festival.ejb.mde.facade.DataPrivacyStatementAcceptanceFacadeLocal.findByVariousParameters(): javax.ejb.EJBException: 
  java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:  
  Exception Description: Problem compiling [SELECT x FROM DataPrivacyStatementAcceptance x]. 
  [14, 44] The abstract schema type 'DataPrivacyStatementAcceptance' is unknown.
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInNoTx(CMTTxInterceptor.java:223)
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.supports(CMTTxInterceptor.java:418)

Lösung

Ursache dieses Kompilierungsproblems und des fehlenden "abstract schema type" war, dass die Entität nicht in der persistence.xml eingetragen war (bzw. nicht erkannt wurde).

Spooky (missing) Exceptions (9) - Objekt wird vom (Eclipse) JPA Provider nicht in die Datenbank geschrieben

Umgebung

  • Wildfly 10
  • EE7
  • Eclipselink

Situation

Ein Subobjekt einer Entität (OneToOne), das über cascade = CascadeType.ALL angebunden ist, wird bei merge nicht persistiert.

Analyse

In diesem Fall wurde das Objekt nicht im Oberobjekt instanziiert
 
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "repairWarranty", fetch = FetchType.EAGER)
    private StateChange stateChange = null;
  • Bei dem ersten Zugriff auf das Objekt über den getter wurde das Objekt angelegt
  • In einer Livecycle Methode @PostPersist wurde auf das Objekt zum ersten mal zugegriffen
Wenn ein abhägiges Objekt erst in einer Livecycle Methode @PostPersist instanziiert wird, erkennt aktuell (Version 2.6.x) der (Eclipselink) JPA Provider nicht, dass dieses Objekt gespeichert werden muss. Auch wenn ohne ein refresh des Oberobjekts nochmals versucht wird ein merge durchzuführen, werden die Daten nicht in die Datenbank geschrieben (sind aber im Objekt enthalten, was das Debugging deutlich erschwert).

Lösung

Entweder die (indirekte) Instanziierung in den Livecycle Methoden vermeiden oder die Objekte direkt anlegen
 
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "repairWarranty", fetch = FetchType.EAGER)
    private StateChange stateChange = new StateChange ();

Freitag Mai 18, 2018

Spooky Exceptions (8) - Exception Description: Entity class [class ... ] has no primary key specified. It should define either an @Id, @EmbeddedId or an @IdClass

Umgebung

  • Wildfly 12
  • EE7
  • Eclipselink

Situation

Bei der Prüfung der persistence.xml beim Hochfahren des Servers wird folgende Exception geworfen:
 
Internal Exception: Exception [EclipseLink-7161] (Eclipse Persistence Services - 2.6.4.v20160829-44060b6): 
org.eclipse.persistence.exceptions.ValidationException
Exception Description: Entity class [class ...] has no primary key specified. It should define either an @Id, @EmbeddedId or an @IdClass. 
If you have defined PK using any of these annotations then make sure that you do not have mixed access-type 
(both fields and properties annotated) in your entity class hierarchy.
In unserem Fall lag dies daran, dass es sich bei der betroffenen Entität um eine Entität handelte, die aus einer anderen abgeleitet ist. Die Parent-Entity liegt in einer ausgelagerten jar Datei, die neben der Projekt-Ejb Datei verwendet wurde. In der application.xml wurde aber vergessen, dies ausgelagerte Datei als ejb-Modul einzutragen. Dadurch konnte der Scanner die übergeordnete Klasse nicht erkennen und hat die in ihr enthaltene Annotation nicht auswerten können.

Freitag Sep 22, 2017

Spooky Exceptions (7) - The tag named inputFile from namespace http://xmlns.jcp.org/jsf/html has a null handler-class defined

Umgebung

  • Wildfly 10
  • EE7

Situation

Es kommt folgende ConfigurationException beim Start des Wildfly:
 
12:12:32,109 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (ServerService Thread Pool -- 88) 
   Critical error during deployment: : com.sun.faces.config.ConfigurationException: 
   The tag named inputFile from namespace http://xmlns.jcp.org/jsf/html has a null handler-class defined
	at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processHandlerClass(FaceletTaglibConfigProcessor.java:422)
	at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags(FaceletTaglibConfigProcessor.java:378)
	at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary(FaceletTaglibConfigProcessor.java:321)
	at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process(FaceletTaglibConfigProcessor.java:270)
	at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:441)
	at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:227)
	at io.undertow.servlet.core.ApplicationListeners.contextInitialized(ApplicationListeners.java:187)
	at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:200)
	at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:171)
	at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
	at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
	at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)

Ursache

Es wurde eine JSF Implementierung (jar) mit der Anwendung deployed. Diese stört sich mit der durch WIldfly bereitgestellten. Bei der Verwendung von MyEclipse geschieht dies häufiger, da MyEclipse das JSF jar häufig in den deployment descriptor aufnimmt.

Ursache

Das Deployment des JSF jar verhindern ;-)

Calendar

Feeds

Search

Links

Navigation