我有一个glassfish 4安装(DAS)。一个远程(SSH)节点和一个在该节点上具有一个实例的群集。
我也为它定义了一个连接池和数据源。
我的测试应用程序非常简单-它是一个带有一个servlet的Web应用程序,因为我通过以下方式加载数据源:
@Resource(lookup = "jdbc/vadsacRootSource")
private Datasource datasource;
什么不起作用-不能实例化群集实例上的数据源(远程),因为找不到基础池-stacktrace在消息末尾看到。
什么有效:
本地DAS节点(默认节点)上的相同应用程序
在远程和本地均加载为自定义JNDI资源保存的字符串
Glassfish 3.1上的整个应用程序(也包括数据源)-远程和本地
因此,当前的glassfish 4版本存在问题-某些远程SSH实例上的数据源(或其池)未实例化(或根据JNDI找到?)。
我已经测试了官方发行版4.0和每晚生成的版本4.1-bl3-相同的问题
你有什么主意吗?
GlassFish服务器
开源版4.0-错误报告HTTP
状态500-内部服务器错误类型异常
reportmessage内部服务器
错误描述服务器遇到内部错误
导致它无法满足此请求。
javax.servlet.ServletException:实例化servlet类时出错
com.sedo.webtesty.HelloWorldroot原因
com.sun.enterprise.container.common.spi.util.InjectionException:
为以下类别创建托管对象时出错:
com.sedo.webtesty.HelloWorldroot原因
com.sun.enterprise.container.common.spi.util.InjectionException:
尝试注入Res-Ref-Env-Property的异常:
com.sedo.webtesty.HelloWorld / datasource @ javax.sql.DataSource @已解决
如:jndi:jdbc / vadsacRootSource @ res主体:null @ mail:null否
运行时属性数据库供应商:空在部署时创建表:
false取消部署时删除表:false进入类
com.sedo.webtesty.HelloWorld:查找失败
'java:comp / env / com.sedo.webtesty.HelloWorld / datasource'在
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
导致javax.naming.NamingException:查找失败
'java:comp / env / com.sedo.webtesty.HelloWorld / datasource'在
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
异常为javax.naming.NamingException:的查找失败
的“ jdbc / vadsacRootSource”
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}
[根异常是javax.naming.NamingException:无法查找
资源:jdbc / vadsacRootSource [根异常是
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
在“ __SYSTEM / pools / mysqlRootVadsacPool”中查找失败
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
导致javax.naming.NamingException:查找失败
的“ jdbc / vadsacRootSource”
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}
[根异常是javax.naming.NamingException:无法查找
资源:jdbc / vadsacRootSource [根异常是
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
在“ __SYSTEM / pools / mysqlRootVadsacPool”中查找失败
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
导致javax.naming.NamingException:无法查找资源
:jdbc / vadsacRootSource [根异常是
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
在“ __SYSTEM / pools / mysqlRootVadsacPool”中查找失败
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
原因
com.sun.appserv.connectors.internal.api.ConnectorRuntimeException:
在“ __SYSTEM / pools / mysqlRootVadsacPool”中查找失败
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
导致javax.naming.NamingException:查找失败
'__SYSTEM / pools / mysqlRootVadsacPool'在
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}
[根本异常是javax.naming.NameNotFoundException:
池]根本原因
javax.naming.NameNotFoundException:poolsnote
异常及其根本原因的完整堆栈跟踪是
在GlassFish Server开源版4.0中可用
logs.GlassFish Server开源版4.0
最佳答案
该问题已在当前的4.1版本中解决-现在一切正常
关于java - Glassfish 4-集群设置-DAS上的数据库连接池,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25543619/