# xpetstore ejb sample application läuft nicht :-(((



## Lars80 (18. Jul 2006)

Hallo Ihr, 

ich suche gerade den Einstig in EJB, XDoclet & Co und nachdem ich nun einen ganzen Tag verbraten habe, die xpetstore sample Applicaton 

http://xpetstore.sourceforge.net/index.html

zum Laufen zu kriegen, wollte ich mal fragen, ob das jemand schonmal hingekriegt hat. Es ist zum verrücktwerden, ich habe alles genau nach Anleitung mehrmals gemacht.

1) JBoss Setup
http://xpetstore.sourceforge.net/setup_jboss-3.0.x.html

2) Run the Application
http://xpetstore.sourceforge.net/run.html

wobei sich die Tasks build.sh und build.sh deploy fehlerfrei ausführen lassen
build.sh test und build.sh db brechen mit folgendem fehler ab:

init:
     [echo] Database=hsqldb

data:
      [sql] Executing file: /home/eclipse/JBoss/jboss-3.2.7/server/xpetstore/xpetstore-ejb/sql/data.sql
      [sql] Failed to execute: DELETE FROM T_COUNTER

BUILD FAILED
/home/eclipse/JBoss/jboss-3.2.7/server/xpetstore/xpetstore-ejb/build-database.xml:40: java.sql.SQLException: Table not found: T_COUNTER in statement [DELETE FROM T_COUNTER]

HSQL DB läuft und ist konfiguriert.

Immerhin lässt sich die Startseite
http://localhost:8080/xpetstore-ejb
anzeigen, wenn ich hier allerdings was anklicke 

kommt folgendes:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Could not dereference object
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:507)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:448)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	xpetstore.web.filter.SignOnFilter.doFilter(Unknown Source)
	com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
	com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

root cause

javax.naming.NamingException: Could not dereference object [Root exception is javax.naming.NameNotFoundException: PetstoreLocal not bound]
	org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1047)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:681)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:697)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:568)
	javax.naming.InitialContext.lookup(InitialContext.java:347)
	xpetstore.services.petstore.util.PetstoreUtil.getLocalHome(Unknown Source)
	xpetstore.web.struts.action.BaseAction.getPetstore(Unknown Source)
	xpetstore.web.struts.action.category.CategoryAction.doExecute(Unknown Source)
	xpetstore.web.struts.action.BaseAction.execute(Unknown Source)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	xpetstore.web.filter.SignOnFilter.doFilter(Unknown Source)
	com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
	com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

root cause

javax.naming.NameNotFoundException: PetstoreLocal not bound
	org.jnp.server.NamingServer.getBinding(NamingServer.java:490)
	org.jnp.server.NamingServer.getBinding(NamingServer.java:498)
	org.jnp.server.NamingServer.getObject(NamingServer.java:504)
	org.jnp.server.NamingServer.lookup(NamingServer.java:277)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:606)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:568)
	javax.naming.InitialContext.lookup(InitialContext.java:347)
	org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:1041)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:681)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:697)
	org.jnp.interfaces.NamingContext.lookup(NamingContext.java:568)
	javax.naming.InitialContext.lookup(InitialContext.java:347)
	xpetstore.services.petstore.util.PetstoreUtil.getLocalHome(Unknown Source)
	xpetstore.web.struts.action.BaseAction.getPetstore(Unknown Source)
	xpetstore.web.struts.action.category.CategoryAction.doExecute(Unknown Source)
	xpetstore.web.struts.action.BaseAction.execute(Unknown Source)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
	xpetstore.web.filter.SignOnFilter.doFilter(Unknown Source)
	com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
	com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
Apache Tomcat/5.0.30

Die entsprechende sql Datei sieht so aus, ich frage mich wo hier die Tabellen defniert werden, in dem ganzen Projekt habe ich keine Tabellendefinitionen gefunden ?:


```
-- Cleanup
DELETE FROM T_COUNTER;
DELETE FROM T_ORDER_ITEM;
DELETE FROM T_ORDER;
DELETE FROM T_CUSTOMER;
DELETE FROM T_ITEM;
DELETE FROM T_PRODUCT;
DELETE FROM T_CATEGORY;
DELETE FROM T_ACCOUNT;

-- Load
INSERT INTO T_ACCOUNT VALUES ( 'user1', 'password1' );
....

INSERT INTO T_CUSTOMER VALUES ( 'user1', 'firstname1', 'lastname1', 'herve@localdomain', '111-1111', 'en', 'street1.1', 'street1.2', 'city1', 'ST1', 'A1B-1C1', 'US', '111-111-111', 'Visa', '01-11', 'user1' );
INSERT INTO T_CUSTOMER VALUES ( 'user2', 'firstname2', 'lastname2', 'daniele@localdomain', '222-2222', 'en', 'street2.1', 'street2.2', 'city1', 'ST2', 'A2B-2C2', 'US', '222-222-222', 'Visa', '02-22', 'user2' );

INSERT INTO T_CATEGORY VALUES ('FISH', 'Fish', 'description of FISH' );
...

INSERT INTO T_PRODUCT VALUES ('FI-SW-01', 'Angelfish', 'Saltwater fish from Australia', 'FISH');
...

INSERT INTO T_ITEM  VALUES ('EST-1', 'Large', '16.50', '10.00',  'fish1.jpg', 'FI-SW-01');
...

INSERT INTO T_COUNTER VALUES('Customer', 1000);
```

Hat schonmal jemand diese Applikation zum Laufen gebracht?

Vielen Dank im voraus!


----------



## Lars80 (21. Jul 2006)

also derjenige, 

der das xpetstore komplett zum laufen kriegt und mir nach übermittlung meiner anleitung sagt, wo der fehler ist, bekommt von mir ein eis oder bei angabe der bankdaten 10 € überwiesen. danke.

hier gibts nochmal eine bessere anleitung, aber es läuft immer noch nicht bei mir.

http://www.inf.fu-berlin.de/inst/ag-se/teaching/V-J2EE-2005/22U_j2ee_infrastruktur.pdf

_"Falls ant db nichts tut (das ist aus unbekanntem Grund bei mir der Fall),
verwenden Sie statt dessen den DatabaseManager von hsqldb (java -cp
$HSQLDB_HOME/lib/hsqldb.jar org.hsqldb.util.DatabaseManager) mit
Type= 'HSQL Database Engine Server' (auf der Login-Maske anzugeben)
und natürlich wieder auf Port 1701 (im Feld URL anzufügen) und laden Sie
per File->OpenScript die Datei $XPETSTORE_HOME/xpetstoreejb/
sql/data.sql und führen Sie sie aus. JBoss muss dabei natürlich laufen,
weil sonst der hsqldb-Server nicht läuft."_

ich scheitere bei dem letzten punkt, da ant db auch bei mir nichts tut, nachdem ich aber das skript lade und ausführe
bekomme ich jedesmal diesen Fehler obwohl nun 3 mal alles strikt nach Anleitung durchgeführt habe.

java.sql.SQLException: Table not found in statement [-- Cleanup
DELETE FROM T_COUNTER]
        at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
        at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
        at org.hsqldb.jdbc.jdbcStatement.execute(Unknown Source)
        at org.hsqldb.util.DatabaseManagerSwing.executeSQL(Unknown Source)
        at org.hsqldb.util.DatabaseManagerSwing.access$800(Unknown Source)
        at org.hsqldb.util.DatabaseManagerSwing$StatementExecRunnable.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
sseibel@seymour:~/eclipse/hsqldb/hsqldb$ java -classpath lib/hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
Failed to load preferences.  Proceeding with defaults:


----------



## KSG9|sebastian (21. Jul 2006)

gib mir 30min...


----------



## Lars80 (25. Jul 2006)

ähmm, 

hat jemand zufällig die uhrzeit..
danke


----------



## Guest (25. Jul 2006)

1) Das ganze ist verdammt chaotisch implementiert (zig verstreute Dateien mit Einstellungen etc.)
2) Es verwendet irgendeine archaische Version von XDoclet
3) Es ist für JBoss 3.0, nicht 3.2.7 (den hast du, wie ich sehe) 
4) Es ist 21:45 Uhr, ich wohne im Dachgeschoss und die Hitze macht mich irre. 

Wenn du dich mit XDoclet beschäftigen möchtest und dies als Beispiel nehmen wolltest, 
vergiss es gleich. Die Beispiele, die bei XDoclet dabei sind, sind besser zum Lernen bzw. 
einfacher gestrickt.

KSG9|sebastian ist vermutlich beim Versuch gestorben.


----------



## Guest (25. Jul 2006)

Noch etwas. Du findest keinen SQL-Code, der die Tabellen erzeugt, da dies
automagisch beim Deployen der Anwendung geschieht. 
Siehe jboss-Tags
	
	
	
	





```
@jboss.persistence
 *      create-table="${jboss.create.table}"   <-- Das hier veranlasst JBoss dazu die Tabellen beim Deployen zu erzeugen, wenn sie nicht existieren
 *      remove-table="${jboss.remove.table}"
```
Das ganze unter der Voraussetzung, dass du eine xpetstoreDS eingerichtet 
hast, da bei JBoss HSQLDB defaultmässig als DefaultDS deployed ist 
und ...gähn...

Vergiss es. Es macht dich nur kirre und bringt dir nichts, wenn du etwas lernen
willst.


----------



## noobster (25. Jul 2006)

auch ohne java kenntnise kann ich dir sagen das eine anwendung die daten aus einer datenbank erwartet die allerdings nicht vorhanden sind nicht laufen wird, egal in welcher Sprache.

ich hätte da noch ne kleine frage, weil ich las da>> sap db <<in der anleitung zum setup der jdbc....

deine db antwortet aber als hsql datenbank???????????????????????? falscher pfad zur db??


----------



## Lars80 (27. Jul 2006)

ok jungs, ich hab es langsam kapiert. XPetstore ist nix zum lernen. Nur sehr ärgerlich, wieviel Zeit ich nun damit verbraten habe. Tja, nicht jedes projekt, das auf sourceforge oder sonst wo vor sich hin schlummert ist auch wirklich was wert. bin nun besser mit einem guten buch und den entsprechenden xdoclet docs bedient.

Und danke für deine Ausführungen zur DB, Gast. Ist mir nun klar.


----------

