Hallo zusammen,
ich habe eine Webanwendung, die auf eine Datenbank zugreift. Die Credentials etc. sind in der META-INF/context.xml beschrieben.
Nun habe ich das Problem, dass ich aus einer Konsolenanwendung heraus, Teile dieser Webanwendung nutzen möchte. D.h. ich habe die entsprechenden JAR-Files eingebunden etc.
Funktioniert auch alles soweit gut, nur der Datenbankzugriff klappt nicht.
Es liegt vermutlich daran, dass er in dieser Form die Daten aus der context.xml nicht ausliest, weil das ja normalerweise Aufgabe des Tomcats ist. Wie kann ich das Problem denn lösen? Kann ich die context.xml irgendwie laden?
Viele Grüße
Mike
ich habe eine Webanwendung, die auf eine Datenbank zugreift. Die Credentials etc. sind in der META-INF/context.xml beschrieben.
Nun habe ich das Problem, dass ich aus einer Konsolenanwendung heraus, Teile dieser Webanwendung nutzen möchte. D.h. ich habe die entsprechenden JAR-Files eingebunden etc.
Funktioniert auch alles soweit gut, nur der Datenbankzugriff klappt nicht.
Code:
Exception Description: Cannot acquire data source [java:comp/env/jdbc/MyDataSource].
Internal Exception: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Exception in thread "Thread-2" java.lang.ExceptionInInitializerError
at com.myproject.functional.systemtask.SystemTaskServerImpl$2.run(SystemTaskServerImpl.java:231)
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [java:comp/env/jdbc/MyDataSource].
Internal Exception: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:766)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
at com.myproject.data.access.database.DatabaseAccess.<clinit>(DatabaseAccess.java:16)
... 1 more
Caused by: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [java:comp/env/jdbc/MyDataSource].
Internal Exception: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at org.eclipse.persistence.exceptions.ValidationException.cannotAcquireDataSource(ValidationException.java:520)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:109)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:204)
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:741)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:239)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685)
... 6 more
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:404)
at javax.naming.InitialContext.lookup(InitialContext.java:415)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:103)
... 11 more
Es liegt vermutlich daran, dass er in dieser Form die Daten aus der context.xml nicht ausliest, weil das ja normalerweise Aufgabe des Tomcats ist. Wie kann ich das Problem denn lösen? Kann ich die context.xml irgendwie laden?
Viele Grüße
Mike