I created a small application with datasource definition in resources.xml. It
works without any error in TomEE 1.5.1 however, 1.5.2 does not recognize
this and datasource does not get created. I am running both servers in
Eclipse. Here is how it is done and error messages:
WEB-INF/resources.xml:
---------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<Resource id="defaultDS" type="DataSource">
JdbcDriver com.mysql.jdbc.Driver
JdbcUrl
jdbc:mysql://localhost:3306/testdb?zeroDateTimeBehavior=convertToNull
UserName testdb
Password SomePass
JtaManaged false
MaxActive 20
MaxIdle 5
MaxWait 10000
</Resource>
</tomee>
WEB-INF/web.xml
---------------------------------------------------------------------------------------------
. . .
<resource-ref>
<description>DB Connection</description>
<res-ref-name>defaultDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
</resource-ref>
. . .
And my code goes something like this:
---------------------------------------------------------------------------------------------
. . .
private DataSource getDataSourceFromJNDI(String jndiDataSourceName) {
try {
InitialContext initialContext = new InitialContext();
DataSource dataSource = (DataSource)
initialContext.lookup("java:comp/env/defaultDS");
return dataSource;
} catch (NamingException e) {
log.error("JNDI error while retrieving " +
"java:comp/env/defaultDS", e);
throw new AuthorizationException(e);
}
}
. . .
While this works great on 1.5.1, I get Exceptions in 1.5.2.
-----------------------------------------------------------------------------------
Error in database operation
java.lang.ClassCastException: org.apache.openejb.core.ivm.naming.IvmContext
cannot be cast to javax.sql.DataSource
at
com.example.test.remoteapp.core.utils.DBUtils.getDefaultDataSource(DBUtils.java:48)
at
com.example.test.remoteapp.core.http.SystemContextInitilizer.cleanUserSessions(SystemContextInitilizer.java:95)
at
com.example.test.remoteapp.core.http.SystemContextInitilizer.contextInitialized(SystemContextInitilizer.java:35)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
I'm running from Eclipse Juno SR1 on JDK 1.7.0.21 on Windows 7 64bit. Both
1.5.1 and 1.5.2 are configured in Eclipse. The project uses dependencies
from 1.5.2. Tried removing all servers and creating from scratch.
Any help on this is appreciated.
--
View this message in context:
http://openejb.979440.n4.nabble.com/Datasource-problem-with-TomEE-1-5-2-Works-in-1-5-1-tp4662607.html
Sent from the OpenEJB User mailing list archive at Nabble.com.