Probleme mit Enterprise Anwendung

Status
Nicht offen für weitere Antworten.

Krusty

Mitglied
Hallo,

seit ein paar Tagen versuche ich mit Hilfe einer selbsterstellten kleinen Java EE Webapplikation unter anderem EJB und JPA näher kennenzulernen. Zu diesem Zweck erzeugte ich mit der Eclipse IDE vier Projekte:
  • Enterprise Application Project
  • Dynamic Web Project
  • EJB Project
  • JPA Project
Wenn ich das Deployment auf meinem JBoss Application Server veranlasse, schreibt er unter anderem folgendes in die Datei server.log:

Code:
org.hibernate.hql.ast.QuerySyntaxException: Articles is not mapped [SELECT a FROM Articles a]
...
ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=BlogApp.ear/BlogJPA.jar#BlogJPA state=Create
javax.persistence.PersistenceException: [PersistenceUnit: BlogJPA] Unable to build EntityManagerFactory
...
org.hibernate.HibernateException: Errors in named queries: findAllArticles

Hinweis: Anstelle der "..."-Einfügungen stehen in der Log-Datei Exceptions

Meine selbst gewählte Arbeitsumgebung:

Windows 7 64-Bit
JDK 6 64-Bit
Eclipse Galileo Java EE Developer
Apache Derby 10.5.3.0 (Embedded)
JBoss 5.1.0 AS

derby-ds.xml (im Archiv) im Verzeichnis jboss\server\default\deploy
derby.jar im Verzeichnis jboss\server\default\lib
Derby-Datenbank im Verzeichnis jboss\server\default\data

Gestern meldete mir der JBoss nur Probleme bzgl. EJB. Heute legte ich die Projekte noch einmal neu an, worauf JBoss beim anschliessenden Bereitstellen der Anwendung plötzlich nur über JPA-Schwierigkeiten berichtet. Dies hielt mich davon ab, diesen Thread in einem spezielleren Unterforum zu eröffnen.

Die Dateien der Projekte aus meinem workspace wurden von mir als Archiv angehängt. Zudem ist dort auch die server.log des JBoss zu finden.

Was mache ich falsch?:bahnhof:

Gruß

Krusty
 
M

maki

Gast
20:15:49,909 ERROR [SessionFactoryImpl] Error in named query: findAllArticles

org.hibernate.hql.ast.QuerySyntaxException: Articles is not mapped [SELECT a FROM Articles a]
Anscheinend ist JBoss der Meinung, dass Articles nicht gemappt ist.

Funzt dass den ausserhalb der JBoss?
 

Krusty

Mitglied
Funzt dass den ausserhalb der JBoss?


Leider auch nicht.

Java:
package storage;

import java.util.List;

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

public class PersistenzBeispiel {

	public static void main(String[] args) {
		// erzeuge EntityManagerFactory mit Unit-Namen aus persistence.xml
		EntityManagerFactory emf = 
			Persistence.createEntityManagerFactory("BlogJPA");
		// erstelle einen Entity Manager
		EntityManager manager = emf.createEntityManager();
		// erzeuge Transaktion
		EntityTransaction tx = manager.getTransaction();
		
		tx.begin();
		manager.persist(new Article("title1", "text1"));
		tx.commit();
		
		tx.begin();
		// Abfrage ausfuehren
		List<Article> articles = 
			manager.createQuery(Article.findAllArticles).getResultList();
		// Transaktion beenden
		tx.commit();
		
		// Ergebnis der Abfrage in die Standardausgabe schreiben
		for (Article article : articles) {
			System.out.println(article.getId() + "\n"
					+ article.getTitle() + "\n"
					+ article.getText() + "\n");
		}
		
		manager.close();
	}
}

[XML]<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence Descriptor zur Konfiguration des Frameworks -->
<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 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<!-- Symbolischer Name der Persistenz-Unit und der zu verwendende
Transaktionstyp; Standard ist 'JTA' -->
<persistence-unit name="BlogJPA" transaction-type="RESOURCE_LOCAL">

<!-- Zu verwendende Service Provider Implementierung -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>

<!-- Persistierbare Klassen dieser Persistenz-Unit -->
<class>storage.Article</class>

<!-- Konfiguration der Service Provider Implementierung -->
<properties>

<!-- Name des intern verwendeten JDBC-Treibers -->
<property name="hibernate.connection.driver_class"
value="org.apache.derby.jdbc.EmbeddedDriver"/>

<!-- URL der zu verwendenden Datenbank -->
<property name="hibernate.connection.url"
value="jdbc:derby:${jboss.server.data.dir}${/}derby${/}blog;create=true"/>

<!-- SQL-Dialect, den Hibernate verwenden soll -->
<property name="hibernate.dialect"
value="org.hibernate.dialect.DerbyDialect"/>

<!-- Benutzername und Passwort -->
<property name="hibernate.connection.username" value=""/>
<property name="hibernate.connection.password" value=""/>

<!-- Flag, ob SQL-Statements ausgegeben werden sollen -->
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
[/XML]

Code:
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: BlogJPA] Unable to build EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
	at storage.PersistenzBeispiel.main(PersistenzBeispiel.java:15)
Caused by: org.hibernate.HibernateException: Errors in named queries: findAllArticles
	at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:397)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
	... 4 more
 
Zuletzt bearbeitet:
M

maki

Gast
Hmm.. den relevanten Code hast du hier leider nicht gepostet, nur im Archiv.

Hier auszüge aus der Entity:
Java:
@Entity

@Table(name="ARTICLES")

@NamedQuery(name=Article.findAllArticles, query="SELECT a FROM Articles a")

public class Article implements Serializable {

...
Du legst fest, dass die Tabelle "ARTICLES" heisst, aber die Entities sollten immer noch ARTICLE heissen, versuche mal deine NamedQuery so zu formulieren:
Java:
@NamedQuery(name=Article.findAllArticles, query="SELECT a FROM Article a")
So was tested man am übrigens besten mit Unittests ;)
 

Krusty

Mitglied
Hmm.. den relevanten Code hast du hier leider nicht gepostet, nur im Archiv.
So was tested man am übrigens besten mit Unittests ;)


Danke für die Hinweise.

Dein Änderungsvorschlag an meiner NamedQuery ergibt nun folgendes:

Code:
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not get or update next value
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
	at storage.PersistenzBeispiel.main(PersistenzBeispiel.java:22)
Caused by: org.hibernate.exception.SQLGrammarException: could not get or update next value
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:64)
	at org.hibernate.engine.transaction.Isolater$JdbcDelegate.delegateWork(Isolater.java:211)
	at org.hibernate.engine.transaction.Isolater.doIsolatedWork(Isolater.java:67)
	at org.hibernate.engine.TransactionHelper.doWorkInNewTransaction(TransactionHelper.java:74)
	at org.hibernate.id.TableGenerator.generate(TableGenerator.java:118)
	at org.hibernate.id.TableHiLoGenerator.generate(TableHiLoGenerator.java:84)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:122)
	at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
	at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)
	at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
	at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)
	at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
	... 1 more
Caused by: java.sql.SQLSyntaxErrorException: Table/View 'HIBERNATE_UNIQUE_KEY' does not exist.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
	at org.hibernate.id.TableGenerator.doWorkInCurrentTransaction(TableGenerator.java:156)
	at org.hibernate.engine.TransactionHelper$1Work.doWork(TransactionHelper.java:61)
	... 15 more
Caused by: java.sql.SQLException: Table/View 'HIBERNATE_UNIQUE_KEY' does not exist.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
	... 30 more
Caused by: ERROR 42X05: Table/View 'HIBERNATE_UNIQUE_KEY' does not exist.
	at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
	at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
	at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
	at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
	at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
	at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
	... 24 more
 

Krusty

Mitglied
Nachdem ich den Methodenaufruf "createQuery" durch "createNamedQuery" ersetzt hatte und von der benutzten Derby Datenbank zu MySQL wechselte, lies sich meine Testklasse erfolgreich ausführen.

Wenn ich nun die Enterprise Anwendung im JBoss starte, werden zwar keine Exceptions geworfen, aber der Aufruf von "http://127.0.0.1:8080/BlogWeb" im Browser führt zu dem Statuscode 404 mit der Beschreibung "The requested resource (/BlogWeb) is not available."

Der Inhalt meiner persistence.xml und meiner mysql-ds.xml sieht wie folgt aus:

persistence.xml

[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 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="BlogJPA">
<jta-data-source>java:/MySqlDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
<property name="hibernate.hbm2dll.auto" value="create" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>[/XML]

mysql-ds.xml

[XML]<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/blog</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>[/XML]

Ausschnitt aus meiner Servlet-Klasse:

Java:
@EJB
private ArticleManagerLocal articleManager;

Vor dieser Anwendung erstellte ich bereits eine Enterprise Anwendung ohne JPA-Projekt, in der ein Servlet eine EJB benutzte und das Ergebnis ohne Probleme im Browser anzeigte.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Probleme beim Umstieg auf Jakarta EE Allgemeines EE 5
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
OnDemand Performance Probleme wegen vieler Objekte Allgemeines EE 3
B @Startup - FileWatcher - Probleme beim Hochfahren des Servers Allgemeines EE 4
Psypsy Spring Probleme mit Datenzugriff Allgemeines EE 5
D Apache POI Probleme mit Daten(Datum) die aus Formeln entstehen Allgemeines EE 3
T Probleme mit File renameTo bzw. File delete @@ Allgemeines EE 3
F Probleme mit JSF und ManagedBean Allgemeines EE 3
B Probleme mit Templates in einem Webprojekt Allgemeines EE 6
Fu3L Probleme beim Einrichten Allgemeines EE 3
A Probleme bei der Einbindung eines Liferay Portalserver (Glassfish) Allgemeines EE 7
S Datenbankzugriff (Probleme mit Cache?!) Allgemeines EE 8
K Probleme mit Apache MyFaces 2 und ICEFaces Facelets Allgemeines EE 1
D Probleme mit Cactus Allgemeines EE 9
F <security-constraint> Probleme Allgemeines EE 2
G Probleme im Tomcat - loading WebappClassLoader Allgemeines EE 3
T Probleme mit ApplikationClient mit Sicherheitsanmeldung! Allgemeines EE 2
G Probleme mit dem Klassenpfad nach dem deployment Allgemeines EE 2
Q Probleme bei einbinden von RichFaces. Allgemeines EE 10
T Probleme mit Facelets und if foreach und when Allgemeines EE 3
V Bildupload probleme Allgemeines EE 2
T Probleme mit Komplexerer ejb-ql Abfrage! Allgemeines EE 2
R EJB Client: Probleme mit der Client.jar Allgemeines EE 2
M Probleme mit Leerzeichen bei HtmlOutputLink Allgemeines EE 5
K probleme mit <h:dataTable> Allgemeines EE 2
M probleme mit client server kommunikation Allgemeines EE 3
S Probleme mit struts - ActionServlet Allgemeines EE 6
E BackingBean Probleme Allgemeines EE 2
K JBoss AS & IDE Probleme Allgemeines EE 2
T Probleme beim Einsatz von J2EE / JBoss Allgemeines EE 4
Ö Spring, Probleme mit FlowScope und HttpServletRequest Allgemeines EE 2
J Probleme mit Struts Allgemeines EE 3
DaRolla Probleme mit Verzeichnissen (Servlet, JSP, Tomcat) Allgemeines EE 8
G Probleme mit ResultSet Allgemeines EE 9
L Probleme mit Kompilierung von JNDI Allgemeines EE 2
K Internet Explorer MIME Type Probleme Allgemeines EE 2
M Probleme beim Performancetuning des Servlets Allgemeines EE 2
G Probleme mit Validierung (Struts, validation.xml) Allgemeines EE 4
G Mehrere Probleme mit Servlets/Java Allgemeines EE 15
W Tomcat Probleme Allgemeines EE 7
FsMarine Probleme beim ausführen von JSP dateien unter Tomcat Allgemeines EE 4
E JBoss 4.0.2 - Probleme mit der Spezifikation Allgemeines EE 3
R Probleme mit Tutorial Allgemeines EE 4
M Probleme bei Aufruf von JSPs in Unterverzeichnissen Allgemeines EE 2
M Probleme beim Webservice Deployment(Sun ApplicationServer) Allgemeines EE 2
H JONAS 4.1.4 Start Probleme Allgemeines EE 2
O Probleme mit Aktualität bei JBOSS Allgemeines EE 4
A Probleme mit J2EE und Tomcat Allgemeines EE 7
R Inputstream Probleme Allgemeines EE 11
P Probleme mit File renameTo bzw. File delete Allgemeines EE 3
F Probleme mit Eclipse/JBoss Allgemeines EE 6
L Certified Master Java Enterprise Architect Java EE Allgemeines EE 3
F Customizing und Erweiterbarkeit bei Enterprise-Anwendungen Allgemeines EE 11
G Enterprise Entwicklung Allgemeines EE 4
K EJB Enterprise Java Beans Allgemeines EE 32
G AnfängerFrage: EJB 3 und Enterprise Client Allgemeines EE 4
M Wann Enterprise Java nutzen? Allgemeines EE 3
F Interaktive Datenvisualisierung mit Java Enterprise Edition Allgemeines EE 2
K Enterprise Java Beans Allgemeines EE 7
U Enterprise Bean mit dynamischer Datenbankauswahl? Allgemeines EE 3
D Benutzerrecht in der Anwendung neu strukturieren Allgemeines EE 5
D Praktische Anwendung des MVC Allgemeines EE 2
T Java ServerFaces Anwendung mit XHTML & CSS Allgemeines EE 1
E modulare Java-Anwendung verteilen (Camel) Allgemeines EE 0
M Zeitgesteuertes Ereignis in einer dynamic web module Anwendung (eclipse) Allgemeines EE 3
G Unit Test einer JavaEE Anwendung schlägt fehl. JNDI Name nicht gefunden. Allgemeines EE 3
G JavaEE Anwendung Testen Allgemeines EE 0
R Wiederverwendbarkeit in JavaEE Anwendung Allgemeines EE 2
OnDemand GUI in einer JavaEE Anwendung Allgemeines EE 6
C Fotoverwaltung in einer Multi-User Anwendung Allgemeines EE 4
W Servletfehler - kleine Anwendung Allgemeines EE 1
R Test einer JEE-Anwendung Allgemeines EE 3
S Verteilte Anwendung mit JavaEE Allgemeines EE 3
J paar Fragen zu JSF2/JEE6 Anwendung mit JBoss 7.1.1 Allgemeines EE 6
F eigene Anwendung per Servlet Container starten Allgemeines EE 9
I EJB aus JSF Anwendung aufrufen Allgemeines EE 2
M JavaEE Anwendung weitergeben Allgemeines EE 24
J Anwendung mit Model 2 Architektur Allgemeines EE 3
T erste Anwendung in JBoss deployen Allgemeines EE 3
T Sinnvoll/machbar? Web Anwendung und EJB auf versch. Servern? Allgemeines EE 7
Y Zugriff auf Files aus einer EAR Anwendung Allgemeines EE 8
slawaweis CMS Unterbau für eine Web 2.0 Anwendung Allgemeines EE 4
H Installer für Tomcat-Anwendung Allgemeines EE 5
Java.getSkill() Anwendung Beans für Formulare Allgemeines EE 5
J JSF 1.2-Anwendung mit Eclipse Galileo Allgemeines EE 1
MQue URL im Brower beim Starten der Anwendung richtig setzen Allgemeines EE 4
S Session in eine andere Anwendung übergeben Allgemeines EE 2
G JSF Anwendung und individuelle Kofiguration Allgemeines EE 6
M Gelegentlicher Absturz Tomcat Anwendung: PermGen Space Allgemeines EE 6
K Java Application Server + ganttproject *.jar Anwendung Allgemeines EE 6
K JSF Test Anwendung ausführen funktioniert nicht Allgemeines EE 7
M Fehler in JSF Anwendung Allgemeines EE 4
M Web Anwendung soll auf Basisobjekte zugreifen können Allgemeines EE 2
M Intranet-Anwendung auf Basis von JSF Allgemeines EE 11
N Tomcat GWT-Anwendung - An beliebiger Stelle schreiben Allgemeines EE 2
ARadauer aus j2se anwendung auf j2ee elemente zugreifen Allgemeines EE 2
S Keystore Zugriff aus Web-Anwendung Allgemeines EE 2
P Testen von Struts-Anwendung Allgemeines EE 7
E freien Forum-Anwendung Allgemeines EE 8
T eine web anwendung bereitstellen ? Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben