JBoss 7.1 + Hibernate: No suitable driver found

Hallo alle zusammen,

ich verzweiflebei ein paar Themen wo ich hoffe, dass mir jemand hier weiterhelfen kann.

Ich versuche mittels JPA eine lokale Datenbank anzubinden. Ziel soll es sein, dass ich die datasource wie auch die Treiber nicht im jBoss (7.1) einstellen moechte, sondern alles in der Applikation selbst kapseln will.
Als JPA-Layer will ich das mitgelieferte Hibernate (4.0.1) verwenden.
Als Datenbank will ich HSQLDB (2.2) verwenden.

Ich habe folgende persistence.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
	version="1.0">
	<persistence-unit name="myPU" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
		<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
		<property name="hibernate.connection.url" value="jdbc:hsqldb:chachdb" />
		<property name="hibernate.connection.username" value="SA" />
		<property name="hibernate.connection.password" value="" />
		<property name="hibernate.connection.pool_size" value="10" />
		<property name="hibernate.show_sql" value="true" />
		<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" 	/>
		<property name="hibernate.hbm2ddl.auto" value="update" />
		</properties>
	</persistence-unit>
</persistence>

Jedes mal beim starten versucht er die Datenbank zu erstellen was aber nicht funktioniert. Er meldet dann: No suitable driver found.
Die hsql.jar ist jedoch definitiv unter WEB-INF/lib zu finden. Ich habe auch versucht die Datei mal als Modul direkt einzubinden (was ich eigentlich nicht machen will/kann) mit dem gleichen Resultat.

Ich habe schon an mehreren Stellen gelesen, dass der Treiber nicht richtig geladen wird. Jedoch habe ich ja auf Grund der Tatsache das ich selbst keinen Code zur Generierung der DB verwende darauf wenig einfluss nehmen?

Was kann ich machen?

Gruß
meinereiner
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

ich habe mal testweise eine HSQL Datasource in JBoss 7 angelegt, erstmal ohne Hibernate. Dazu musste ich das hsqldb.jar Patchen (mit einer entsprechenden META-INF/services/java.sql.Driver Konfiguration) siehe auch hier:
https://community.jboss.org/wiki/DataSourceConfigurationInAS7

... ansonsten - kann es sein, dass der JBoss 7 schon Hibernate (4) mitbringt? In diesem Fall könnte es sein, dass der ClassLoader der die Hibernate Klassen geladen hat nicht der ClassLoader deiner Web App sondern einer der Parents ist und deshalb Klassen in deinem WEB-INF/lib*.jars nicht sieht.

Versuch doch mal wie oben beschrieben das hsqldb.jar zu patchen und dann explizit in /deplyoments zu deployen.

Sollte das auch nicht funktionieren, würde ich es erstmal mit der H2 DB versuchen - die ist ähnlich der hsqldb und direkt bei JBoss mit dabei. Zur Konfiguration von H2 und Hibernate siehe:
https://www.google.de/webhp?sourcei....r_gc.r_pw.r_cp.r_qf.,cf.osb&biw=1678&bih=887

Gruß Tom
 
Hallo,

ich habe mal testweise eine HSQL Datasource in JBoss 7 angelegt, erstmal ohne Hibernate. Dazu musste ich das hsqldb.jar Patchen.
Komisch die JAR die ich hatte hatte gepasst. In jedem Fall hatte ich das auch schonprobiert gehabt.
... ansonsten - kann es sein, dass der JBoss 7 schon Hibernate (4) mitbringt?
Ja bei der mir zur verfügung stehenden Version zumindest.
In diesem Fall könnte es sein, dass der ClassLoader der die Hibernate Klassen geladen hat nicht der ClassLoader deiner Web App sondern einer der Parents ist und deshalb Klassen in deinem WEB-INF/lib*.jars nicht sieht.
Ich denke, dass dies mein Problem ist, denn ich habe versucht wie vorgeschlagen mal H2 zu verwenden. Wenn ich alle meine Einstellungen in meiner persistence.xml habe (sprich keine Datasource direct im jBoss sondern nur in der WebApplication, passiert mir das auch bei dem im jBoss standardmäßigen H2-Modul. Aktiviert habe ich es durch die jboss-deployment-structure.xml.

Ich kann im Moment machen was ich will. Eine lokale Datenbankkonfiguration via persistence.xml ist mit meinem jBoss 7.1 nicht möglich.

Macht es sinn die Hibernate auf den letzten Stand upzudaten?

Gruß
meinereiner
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

ich würde dir in diesem Fall empfehlen in JBoss einfach eine Data Source zu definieren und dann diese in Hibernate zu verwenden.

Gruß Tom
 
Hi,

danke für deine Antwort.

Gibt es eine Möglichkeit die DataSource auch mit der Applikation selbst zu deployen?

Gruß
meinereiner
 
Hallo,

danke für deine Hilfe.
Dann wird mir wohl oder übel nichts anderes übrig bleiben, als die DataSources im Server anzugeben.
Schade!

Trotzdem vielen Dank!

Gruß
meinereiner
 

gorefest

Erfahrenes Mitglied
Hallo,
Dann wird mir wohl oder übel nichts anderes übrig bleiben, als die DataSources im Server

Das ist doch der Sinn von managed Resources?

Btw, ab JBoss 7 kann jeder JDBC Level 4 Treiber (und dazu gehört auch HSQLDB in letzter Version) inst Deployment-Verzeichnis geworfen werden. Dann wird der Treiber registriert.

Dannn kann man a) über die Webkonsole einfach die JTA-Datasource anlegen oder b) von Hand sie (je nach Konf) ins standalone.xml einfrickeln.

@Thomas : Soweit ich das verstanden habe, gibt es ab JBoss 7 keine *-ds.xml Dateien mehr.

Grüße,
gore
 
Zuletzt bearbeitet:

gorefest

Erfahrenes Mitglied
ja, wäre vielleicht besser gewesen.

Man hat die Abwärtskompatibilität zu Gunsten einer zentralen Konfiguration über die Klinge springen lassen... was bei den alten JBoss Versionen vllt gar net soooo schlecht war (Best practice von JBoss : Server komplett in SVN einchecken, da eine Änderung an der Konfig bis zu 6 Files betrifft *schauder*)
 

Neue Beiträge