2012-01-05 71 views
1

根据this article和一些其他文档,除非前缀为java:app/,否则JDBC资源将全局部署(可用服务器范围内)。当我改变jdbc/myDataSourcejava:app/jdbc/myDataSourcemyConnectionPooljava:app/myConnectionPool,部署失败与此异常:GlassFish 3.1.1 mangles资源名称,然后抱怨它找不到它

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/前缀,但随后的资源部署服务器范围内。

回答

0

在阅读this section之后,我意识到我不必将glassfish-resources.xml中定义的资源与java:app/范围前缀相加。根据该文件:

如果资源定义档案中提供(即中创建一个.ear或其他档案中与GlassFish resources.xml中),它们被认为是作用域资源。

然后它接着说的资源,如果应用程序是耳朵和路径是META-INF/glassfish-resources.xml或(在我的情况),应用程序作用域是一个战争和路径是WEB-INF/glassfish-resources.xml

这也许可以解释为什么GlassFish正在改变名称。由于我添加了前缀,因此最有可能发生名称冲突。

0

您是否将WAR文件部署到EAR文件中,因为您的'java:app /'前缀是用于EAR部署的链接。

+0

是的,只是战争。所以我尝试改变模块作用域,它仍然无法找到它。仅用WAR就不可能部署非全局资源? – 2012-01-05 20:13:45

相关问题