Как настроить имя рабочего имени jndi и таймер в Jboss 7.1 при развертывании военного веб-приложения

Это конфигурация, которая у меня есть, и она отлично работает в 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
<?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/[email protected]: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>
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/context.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/[email protected]: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>

Я получаю при развертывании веб-приложения в виде файла войны:

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 это связано?


person user63898    schedule 10.04.2019    source источник


Ответы (1)


Пожалуйста, покажите конфигурацию вашей базы данных в файле standalone.xml, там вы должны указать имя JNDI:

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

Я не уверен, нужен ли вам префикс comp/env в JNDI, в JBOSS EAP 7.1 вы можете просто использовать jndi-name="java:/jdbc/DEMODB"

person Олег Гаврилів    schedule 11.04.2019
comment
хорошо, источник данных я вижу в standalone.xml, но как насчет :Resource name=xx/DemoClientManger, который не является конфигурацией базы данных? - person user63898; 11.04.2019
comment
У меня нет опыта в этом, но вам нужно добавить свой собственный WorkManager в ‹default-workmanager› в standalone.xml. Например, здесь access.redhat.com/solutions/3626201. Также добавьте имя jndi: ‹workmanager name=MyWorkManager jndi-name=''java:/xx/DemoClientManger › - person Олег Гаврилів; 12.04.2019
comment
хорошо, это что-то .. как насчет класса .. типа .. параметров ключ/значение, которые идут с конфигурацией tomcat? - person user63898; 12.04.2019