具有以下内容的EAR:
META-INF / MANIFEST.MF
META-INF / application.xml中
META-INF / GlassFish的-resources.xml中
META-INF / wildfly-ds.xml中
actionbazaar - 第三章 - client.jar中
actionbazaar,第3章,ejb.jar
actionbazaar-chapter3-web.war
无法在WildFly 9中部署,但例外情况为java.lang.RuntimeException: WFLYNAM0030: Illegal context in name: java:app/jdbc/ActionBazaarDS"
文件META-INF / wildfly-ds.xml使用有问题的JNDI名称为应用程序配置数据源。
<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.jboss.org/ironjacamar/schema
http://docs.jboss.org/ironjacamar/schema/datasources_1_1.xsd">
<datasource enabled="true"
jndi-name="java:app/jdbc/ActionBazaarDS"
pool-name="Chapter3EmbeddedH2Pool">
<connection-url>jdbc:h2:mem:chapter3 ;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
</datasource>
</datasources>
相同的JNDI名称适用于GlassFIsh 4.1。但我不确定这里有什么问题。 请解释这里有什么问题。
答案 0 :(得分:2)
wildfly-ds.xml
文件是一种主要用于向后兼容的机制。 JNDI名称应位于java:jboss/jdbc/ActionBazaarDS
等全局名称空间中。
现在,任何符合Java EE 7的实现都允许您在标准部署描述符中配置数据源:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
<module>
<java>actionbazaar-chapter3-client.jar</java>
</module>
<module>
<ejb>actionbazaar-chapter3-ejb.jar</ejb>
</module>
<module>
<web>
<web-uri>actionbazaar-chapter3-web.war</web-uri>
<context-root>/actionbazaar</context-root>
</web>
</module>
<library-directory>lib</library-directory>
<data-source>
<name>java:app/jdbc/ActionBazaarDS</name>
<url>jdbc:h2:mem:chapter3 ;DB_CLOSE_DELAY=-1</url>
...
</data-source>
</application>
这应允许您在java:app命名空间中声明DataSource,因为规范中的示例暗示了这一点。