Glassfish 4 - cluster setup - pooling database connections in DAS
I have a glass fish setup (DAS). One remote (SSH) node and one cluster with one instance per node. I also defined a connection pool and a data source for it.
My test app is very simple - it's a single servlet web app where I load the datasource like this:
@Resource(lookup = "jdbc/vadsacRootSource")
private Datasource datasource;
What doesn't work - the data source on the cluster instance (remote) cannot be created because the underlying pool cannot be found - see the stacktrace at the end of the post.
What works:
- The same application on a local DAS node (defaul node)
- Loading a string stored as a custom JNDI resource on both - remote and local
- All application (data source too) for glassfish 3.1 - remote and local
So, something is wrong with the current version of Glassfish 4 - Datasources (or its pool) is not getting an instance (or found on JNDI?) On some remote SSH instance. I tested official release 4.0 and nightly version 4.1-bl3 - same problem
Do you have any ideas?
GlassFish Server Open Source Edition 4.0 - Bug Reporting
HTTP Status 500 - Internal Server Error
Type Exception report
message Internal Server Error
Description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class com.sedo.webtesty.HelloWorldThe main reason
com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class com.sedo.webtesty.HelloWorldThe main reason
com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Res-Ref-Env-Property: com.sedo.webtesty.HelloWorld / datasource@javax.sql.DataSource @ resolved as: jndi: jdbc / vadsacRootSource @ res principal: null @ mail : null No Runtime properties Database Vendor: null Create Tables at Deploy: false Delete Tables at Undeploy: false into class com.sedo.webtesty.HelloWorld: Lookup failed for 'java: comp / env / com.sedo.webtesty.HelloWorld / datasource' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming}root cause
javax.naming.NamingException: Lookup failed for 'java: comp / env / com.sedo.webtesty.HelloWorld / datasource' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Lookup failed for 'jdbc / vadsacRootSource' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource} [Root exception is javax.naming.NamingException: Unable to lookup resource: jdbc / vadsacRootSource [Root exception is com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Lookup failed for '__SYSTEM / pools / mysqlRootVadsacPool' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource}]]]root cause
javax.naming.NamingException: Lookup failed for 'jdbc / vadsacRootSource' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource} [Root exception is javax.naming.NamingException: Unable to lookup resource: jdbc / vadsacRootSource [Root exception is com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Lookup failed for '__SYSTEM / pools / mysqlRootVadsacPool' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource}]]root cause
javax.naming.NamingException: Unable to lookup resource : jdbc / vadsacRootSource [Root exception is com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Lookup failed for '__SYSTEM / pools / mysqlRootVadsacPool' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource}]root call
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Lookup failed for '__SYSTEM / pools / mysqlRootVadsacPool' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource}root cause
javax.naming.NamingException: Lookup failed for '__SYSTEM / pools / mysqlRootVadsacPool' in SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming, com.sun.enterprise.naming.logicalName = java: comp / env / com.sedo.webtesty.HelloWorld / datasource} [Root exception is javax.naming.NameNotFoundException: pools]The main reason
javax.naming.NameNotFoundException: poolsNote A complete trace of the exception stack and its root causes is available in GlassFish Server Open Source Edition 4.0 logs.
GlassFish Server Open Source Edition 4.0
source to share