部署战争 Web 应用程序时,如何在 Jboss 7.1 中配置 jndi 引用名称管理器和计时器



这是我的配置,在tomcat中工作正常,
我使用 http://commonj.myfoo.de/作为工匠和计时器 现在,当我尝试在 JBoss 7.1 中将战争网络应用程序作为独立应用程序(不是域)安装时,
我不断收到这些错误:

在 WEB-INF/web 中.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<resource-ref>
<description>DB connection</description>
<res-ref-name>jdbc/DEMODB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>    
<resource-ref>
<res-ref-name>xx/DemoClientManger</res-ref-name>
<res-type>my.worker.handler</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>

在Jboss-web中.xml

<jboss-web>
<resource-ref>
<res-ref-name>jdbc/DEMODB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/comp/env/jdbc/DEMODB</jndi-name>
</resource-ref>
<resource-ref>
<res-ref-name>xx/DemoClientManger</res-ref-name>
<res-type>my.worker.handler</res-type>
<jndi-name>java:/xx/DemoClientManger</jndi-name>
</resource-ref>
</jboss-web>

在METAINF/上下文中.xml

<?xml version='1.0' encoding='utf-8'?>
<Context>

<Resource name="jdbc/DEMODB" auth="Container" type="javax.sql.DataSource"
username="TEST_USER"
password="TEST_USER" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:TEST_USER/TEST_USER@xxx.xx.11.22:3333/orcl"
validationQuery="SELECT 1 from dual"
testOnBorrow="true"
/>
<Resource name="xx/DemoClientManger" auth="Container"
type="my.worker.handler" factory="de.myfoo.commonj.work.FooWorkManagerFactory"
minThreads="99" maxThreads="100" />
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

将 Web 应用程序部署为 war 文件时,我得到了:

18:30:23,780 ERROR [org.jboss.as.controller.management-operation] (External Management Request Threads -- 7) WFLYCTL0013: Operation ("add") failed - address: ([("deployment" => "myapp.war")]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => [
"jboss.naming.context.java.comp.env.jdbc.DEMODB",
"jboss.naming.context.java.DemoClientManger"
],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [       
"jboss.naming.context.java.module.myapp.myapp.env.jdbc.DEMODB is missing [jboss.naming.context.java.comp.env.jdbc.DEMODB]",
"jboss.naming.context.java.module.myapp.myapp.env.xx.DemoClientManger is missing [jboss.naming.context.java.DemoClientManger]"
]
}
18:30:23,793 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) WFLYJCA0019: Stopped Driver service with driver-name = myapp.war_com.microsoft.sqlserver.jdbc.SQLServerDriver_4_0
18:30:23,805 ERROR [org.jboss.as.server] (External Management Request Threads -- 7) WFLYSRV0021: Deploy of deployment "myapp.war" was rolled back with the following failure message:
{
"WFLYCTL0412: Required services that are not installed:" => [
"jboss.naming.context.java.comp.env.jdbc.DEMODB",
"jboss.naming.context.java.DemoClientManger"
],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.naming.context.java.module.myapp.myapp.env.jdbc.DEMODB is missing [jboss.naming.context.java.comp.env.jdbc.DEMODB]",
"jboss.naming.context.java.module.myapp.myapp.env.xx.DemoClientManger is missing [jboss.naming.context.java.DemoClientManger]"
]
}

我在这里错过了什么? 如何获取有关错误在哪里的更多信息?
更新我使用 http://commonj.myfoo.de/作为工匠和计时器,我读到这有问题:
https://access.redhat.com/solutions/199183 这有关系吗?

请在一个独立的文件中显示您的数据库配置.xml您应该在那里放置 JNDI 名称:

<datasource jta="true" jndi-name="java:/comp/env/jdbc/DEMODB"

我不确定你是否需要 JNDI 中的 comp/env 前缀,在 JBOSS EAP 7.1 中,你可以简单地使用 jndi-name="java:/jdbc/DEMODB">

最新更新