Problem mit JPA und JBoss

devian_der_999

Mitglied
Hallo leute,

bin mir nicht ganz sicher ob das das richtige Forum für meine Frage ist. Wenn nicht mod bitte verschieben :)

Also zu meinem Problem:

Ich benutze Jboss 4.2.3, Eclipselink 2.2.1 und eine Oracle Datenbank.

Ich habe mir ein Web projekt erstellt welches auf die datenbank via JPA(EclipseLink) zugreiffen soll.

Dazu habe ich die folgende zeilen code:
PHP:
HashMap<String, Object> emProbs = new HashMap<String, Object>();
			emProbs.put("eclipselinkjdbc.driver", "oracle.jdbc.driver.OracleDriver");
			emProbs
					.put(PersistenceUnitProperties.JDBC_URL,
							"jdbc:oracle:thin:@XXXXXXX:1521:XXXX");
			emProbs.put(PersistenceUnitProperties.JDBC_USER, "XXX");
			emProbs.put(PersistenceUnitProperties.JDBC_PASSWORD, "XXX");
			emProbs.put("eclipselink.query-results-cache", "false");
			emProbs.put("eclipselink.logging.level", "ALL");
			
			EntityManagerFactory fac = Persistence.createEntityManagerFactory(PersistenceConsts.PERSISTENCE_UNIT_NAME, emProbs); 
			entityManagerHolder.set(fac.createEntityManager());

die oracle jdbc is im classpath und wird auch in die war unter "WEB-INF/lib" hinzugefügt.
In der persistence.xml stehen nur die classen und der provider.
Code:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

Trotzdem bekomme ich folgende Exception:

Code:
10:43:11,238 INFO  [STDOUT] [EL Finer]: 2011-01-13 10:43:11.238--ServerSession(27087422)--Thread(Thread[main,5,jboss])--DriverManager connect failed, trying direct connect.
10:43:11,238 INFO  [STDOUT] [EL Finer]: 2011-01-13 10:43:11.238--ServerSession(27087422)--Thread(Thread[main,5,jboss])--java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@XXXXXXXXXXXXX:1521:XXX
	at java.sql.DriverManager.getConnection(DriverManager.java:602)
	at java.sql.DriverManager.getConnection(DriverManager.java:154)
	at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:98)
	at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
	at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:579)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:380)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:157)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:214)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:202)
	at com.kn.cifa.database.DataBaseController.loadEntityManager(DataBaseController.java:57)
	at com.kn.cifa.core.Controller.<init>(Controller.java:55)
	at com.kn.cifa.core.StartUp.init(StartUp.java:42)

Wenn ich beim JBoss die JDBC jar in das ${JBoss_HOME}/lib/endorsed Verzeichniss packe funktioniert alles, aber das kann ja nicht die lösung sein weil WEB applikationen ja ihr benötigten jar's mit bringen sollen. :)

Hatte jmd schon mal das Problem?

Bitte Hilfe ich verzweifel hier :(

P.S. benutze kein EJB oder connectionpooling
 
Nachtrag:

Is ja komisch:
Wenn ich vor der createEntityManagerFactory Methode folgenden code schreib geht es:

PHP:
try {
				Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			} catch (InstantiationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

Also scheint das wohl irgendwie mit dem ClassLoader zusamen zu hängen. Über erfahrungsberichte würd ich mich freuen :)
 

Neue Beiträge

Zurück