Hibernate, smartGwt, HSQLDB-Problem

bnr

Mitglied
Hallo.

Ich bin recht neu im hibernate und smartGwt ee Umfeld. Leider habe ich Probleme wo ich keine Lösung bis jetzt gefunden habe.

1) Im DB-Verzecihnis wird immer eine Log- und properties-Datei angelegt, jedoch nie die data Datei. Wo werden die Daten abgelegt? Speicher? Sollte aber nicht sein!

2) Das DB-Verzeichnis ist im Unterordner von WAR. Wenn ich die Applikation als WAR-File im Jetty deployen möchte, so ist die Datenbank im WAR. Gibt es hier nicht Probleme? Wenn Jetty beendet wird, werden dann die DB-Daten aus dem Tempordner wieder ins WAR geschrieben? Denke nicht! Wie kann ich dann die DB auslagen z.B. /home/UserA/ProjectXY/db.


3) Wenn ich Jetty beende, so erhalte ich folgende Exception (siehe Unten). Wo liegt das Problem, ich kann den Fehler nicht lokalisieren.

Info zu Punkt 1 & 2

persistence.xml
Code:
<?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="ds" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
        
    <class>com.detection.smiths.eapcfg.server.persistence.Comment</class>
    ...
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    
    <properties>
      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
      
      <property name="hibernate.hbm2ddl.auto" value="create" />
      <property name="hibernate.connection.username" value="sa"/>
      <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver"/>
      <property name="hibernate.connection.password" value=""/>
      <property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/isomorphic"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
    </properties>
  </persistence-unit>
</persistence>


hsqlserver.properites
Code:
hsql.url=jdbc:hsqldb:hsql://localhost/isomorphic
hsql.user=sa
hsql.password=
hsql.data.dir=WEB-INF/db/hsqldb
hsql.database=isomorphic

server.properties

Code:
webRoot: __AUTODETECT__
isomorphicPathRootRelative: EAPcfg_js/sc
apps.adminConsole.location: $webRoot/EAPcfg_js/sc/tools
ui.adminConsole.location: $webRoot/EAPcfg_js/sc/tools
jpa.emfProvider: com.isomorphic.jpa.EMFProviderLMT
jpa.persistenceUnitName: ds
project.datasources: $webRoot/ds
project.ui: $webRoot/shared/ui
project.apps: $webRoot/shared/app

Info zu Punkt 3:
Code:
^C2012-07-03 08:07:00.350:INFO:oejs.Server:Graceful shutdown SelectChannelConnector@0.0.0.0:8080
2012-07-03 08:07:00.351:INFO:oejs.Server:Graceful shutdown o.e.j.w.WebAppContext{/EAPcfg,file:/private/var/folders/p1/23qvhc9d1z58lf6749m8hlww0000gn/T/jetty-0.0.0.0-8080-EAPcfg.war-_EAPcfg-any-/webapp/},/Users/bnr/Downloads/jetty-distribution-8.1.4.v20120524/webapps/EAPcfg.war
2012-07-03 08:07:00.351:INFO:oejs.Server:Graceful shutdown o.e.j.s.h.ContextHandler{/javadoc,file:/Users/bnr/Downloads/jetty-distribution-8.1.4.v20120524/javadoc/}
2012-07-03 08:07:00.352:INFO:oejs.Server:Graceful shutdown o.e.j.w.WebAppContext{/,null},/Users/bnr/Downloads/jetty-distribution-8.1.4.v20120524/webapps/test.war
2012-07-03 08:07:01.378:INFO:oejsh.ContextHandler:stopped o.e.j.w.WebAppContext{/,null},/Users/bnr/Downloads/jetty-distribution-8.1.4.v20120524/webapps/test.war
2012-07-03 08:07:01.379:INFO:oejsh.ContextHandler:stopped o.e.j.s.h.ContextHandler{/javadoc,file:/Users/bnr/Downloads/jetty-distribution-8.1.4.v20120524/javadoc/}
Exception in thread "HSQLDB Connection @48ec9441" Exception in thread "HSQLDB Connection @75e6743e" java.lang.NullPointerException
	at org.hsqldb.ServerConnection.close(Unknown Source)
	at org.hsqldb.ServerConnection.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:680)
java.lang.NullPointerException
	at org.hsqldb.ServerConnection.close(Unknown Source)
	at org.hsqldb.ServerConnection.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:680)
Exception in thread "HSQLDB Connection @22652552" [Server@5578920a]: Initiating shutdown sequence...
java.lang.NullPointerException
	at org.hsqldb.ServerConnection.close(Unknown Source)
	at org.hsqldb.ServerConnection.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:680)
Exception in thread "HSQLDB Connection @446023f7" java.lang.NullPointerException
	at org.hsqldb.ServerConnection.close(Unknown Source)
	at org.hsqldb.ServerConnection.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:680)
Exception in thread "HSQLDB Connection @5e73e0d" java.lang.NullPointerException
	at org.hsqldb.ServerConnection.close(Unknown Source)
	at org.hsqldb.ServerConnection.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:680)
Exception in thread "HSQLDB Connection @5bbc93a7" java.lang.NullPointerException
	at org.hsqldb.ServerConnection.close(Unknown Source)
	at org.hsqldb.ServerConnection.run(Unknown Source)
	at java.lang.Thread.run(Thread.java:680)
2012-07-03 08:07:01.414:INFO:oejsl.ELContextCleaner:javax.el.BeanELResolver purged
2012-07-03 08:07:01.414:INFO:oejsh.ContextHandler:stopped o.e.j.w.WebAppContext{/EAPcfg,file:/private/var/folders/p1/23qvhc9d1z58lf6749m8hlww0000gn/T/jetty-0.0.0.0-8080-EAPcfg.war-_EAPcfg-any-/webapp/},/Users/bnr/Downloads/jetty-distribution-8.1.4.v20120524/webapps/EAPcfg.war
[Server@5578920a]: Shutdown sequence completed in 102 ms.
[Server@5578920a]: 2012-07-03 08:07:01.509 SHUTDOWN : System.exit() was not called
localhost:jetty-distribution-8.1.4.v20120524 bnr$
 
So, Lösung gefunden.

Mein Server.main hatte falsche Parameter. Hier wurde immer context.getRealPath verwendet. Somit komme ich nie auf einen grünen Zweig. Jetzt ist auch die DB nicht mehr im WAR, Jetty läuft nun auch ohne Probleme und Fehlermeldungen sind keine mehr da.

:)

Code:
hsql.url=jdbc:hsqldb:file:/Users/bnr/eapcfg/isomorphic;shutdown=true
hsql.user=sa
hsql.password=
hsql.data.dir=/Users/bnr/eapcfg/isomorphic
hsql.database=isomorphic

Code:
    private static final String URL_PROPERTY = "hsql.url";
    private static final String USER_PROPERTY = "hsql.user";
    private static final String PASSWORD_PROPERTY = "hsql.password";
    private static final String DATA_DIR_PROPERTY = "hsql.data.dir";
    private static final String DATABASE_PROPERTY = "hsql.database";

            String databaseDir = properties.getProperty(DATA_DIR_PROPERTY);
            String database = properties.getProperty(DATABASE_PROPERTY);

//            Server.main(new String[]{
//                    "-database.0",
//                    context.getRealPath(databaseDir + "/" + database),
//                    "-dbname.0",
//                    database,
//                    "-no_system_exit",
//                    "true"
//            });
            Server.main(new String[]{
                    "-database.0",
                    databaseDir,
                    "-dbname.0",
                    database,
                    "-no_system_exit",
                    "true"
            });
 
Zurück