GlassFish 3.1.1 mangles资源名称然后抱怨它找不到它

时间:2012-01-05 19:58:14

标签: java jdbc glassfish jndi glassfish-3

根据this article和许多其他文档,除非使用java:app/作为前缀,否则全局部署JDBC资源(可在服务器范围内使用)。当我将jdbc/myDataSource更改为java:app/jdbc/myDataSourcemyConnectionPool更改为java:app/myConnectionPool时,部署会因此异常而失败:

com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : { ResourceInfo : (jndiName=java:app/jdbc/myDataSource__pm), (applicationName=com.example.web_example_war_1.0-SNAPSHOT) }

在没有java:app/前缀的情况下工作正常,但资源在服务器范围内部署。

2 个答案:

答案 0 :(得分:0)

您是否正在部署EAR文件中捆绑的WAR文件,因为根据您的'java:app /'前缀用于EAR部署的链接。

答案 1 :(得分:0)

在阅读this section之后,我意识到我不必在glassfish-resources.xml中使用java:app/范围前缀为资源添加前缀。根据该文件:

  

如果资源定义是在归档中提供的(即.ear或其他归档中的 glassfish-resources.xml ),则假定它们是作用域资源。

然后它继续说如果应用程序是EAR并且路径是META-INF/glassfish-resources.xml或者(在我的情况下)它是WAR并且路径是WEB-INF/glassfish-resources.xml,则资源是应用程序作用域。

这可以解释为什么GlassFish会破坏这个名字。最有可能是名称冲突,因为我添加了前缀。