hsqldb-ds not in memory persistence
mussie Jan 10, 2008 2:59 AMhello forum,
I'm trying to build a database aplication with jboss and could not make my
data persistent. I allready changed the persistence from create-drop to update in the seam booking example.
So here is my question:
is it correct that I have to change the hsqldb into server mode to make the
data persistent?
I tried to do so by changing the hsqldb-ds.xml in my deploy directory. But when I start my hsql database manager it is still in in-memory type only the URL changed to jdbc:hsqldb:hsql://127.0.0.1:1701.
Does anyone know why my database engine doesn't convert to server based persistence?
This is how my hsqldb-ds looks like.
<?xml version="1.0" encoding="UTF-8"?> <!-- The Hypersonic embedded database JCA connection factory config --> <!-- $Id: hsqldb-ds.xml 63175 2007-05-21 16:26:06Z rrajesh $ --> <datasources> <local-tx-datasource> <!-- The jndi name of the DataSource, it is prefixed with java:/ --> <!-- Datasources are not available outside the virtual machine --> <jndi-name>DefaultDS</jndi-name> <!-- For server mode db, allowing other processes to use hsqldb over tcp. This requires the org.jboss.jdbc.HypersonicDatabase mbean.--> <connection-url>jdbc:hsqldb:hsql://${jboss.bind.address}:1701</connection-url> <!-- For totally in-memory db, not saved when jboss stops. The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown <connection-url>jdbc:hsqldb:.</connection-url> --> <!-- For in-process persistent db, saved when jboss stops. The org.jboss.jdbc.HypersonicDatabase mbean is required for proper db shutdown <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}localDB</connection-url> --> <!-- The driver class --> <driver-class>org.hsqldb.jdbcDriver</driver-class> <!-- The login and password --> <user-name>sa</user-name> <password></password> <!--example of how to specify class that determines if exception means connection should be destroyed --> <!--exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyExceptionSorter</exception-sorter-class-name--> <!-- this will be run before a managed connection is removed from the pool for use by a client--> <!--<check-valid-connection-sql>select * from something</check-valid-connection-sql> --> <!-- The minimum connections in a pool/sub-pool. Pools are lazily constructed on first use --> <min-pool-size>5</min-pool-size> <!-- The maximum connections in a pool/sub-pool --> <max-pool-size>20</max-pool-size> <!-- The time before an unused connection is destroyed --> <!-- NOTE: This is the check period. It will be destroyed somewhere between 1x and 2x this timeout af ter last use --> <!-- TEMPORARY FIX! - Disable idle connection removal, HSQLDB has a problem with not reaping threads on closed connections --> <idle-timeout-minutes>0</idle-timeout-minutes> <!-- sql to call when connection is created <new-connection-sql>some arbitrary sql</new-connection-sql> --> <!-- sql to call on an existing pooled connection when it is obtained from pool <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> --> <!-- example of how to specify a class that determines a connection is valid before it is handed out from the pool <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.DummyValidConnectionChecker</valid-connection-checker-class-name> --> <!-- Whether to check all statements are closed when the connection is returned to the pool, this is a debugging feature that should be turned off in production --> <track-statements/> <!-- Use the getConnection(user, pw) for logins <application-managed-security/> --> <!-- Use the security domain defined in conf/login-config.xml --> <security-domain>HsqlDbRealm</security-domain> <!-- Use the security domain defined in conf/login-config.xml or the getConnection(user, pw) for logins. The security domain takes precedence. <security-domain-and-application>HsqlDbRealm</security-domain-and-application> --> <!-- HSQL DB benefits from prepared statement caching --> <prepared-statement-cache-size>32</prepared-statement-cache-size> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> <metadata> <type-mapping>Hypersonic SQL</type-mapping> </metadata> <!-- When using in-process (standalone) mode <depends>jboss:service=Hypersonic,database=localDB</depends>--> <!-- Uncomment when using hsqldb in server mode--> <depends>jboss:service=Hypersonic</depends> </local-tx-datasource> <!-- Uncomment if you want hsqldb accessed over tcp (server mode)--> <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic"> <attribute name="Port">1701</attribute> <attribute name="BindAddress">${jboss.bind.address}</attribute> <attribute name="Silent">true</attribute> <attribute name="Database">default</attribute> <attribute name="Trace">false</attribute> <attribute name="No_system_exit">true</attribute> </mbean> <!-- For hsqldb accessed from jboss only, in-process (standalone) mode <mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=localDB"> <attribute name="Database">localDB</attribute> <attribute name="InProcessMode">true</attribute> </mbean> --> </datasources>
Anyway if someone knows what is wrong with my hsqldb-ds I'd appreciate it or
is there a tutorial or example with Jboss Java5 and HSQL persistence (not in memory).
Because this is all I need an example of an application where I can store user acounts
in a hsqldb not only as long as the server runs. I want to find those acounts in the db
even if I restart my server (PC)!
Can anyone help me out?
thanks and best regards,
Mussie