Привязка JNDI в JBoss (LiveCycle под ключ) - PullRequest
2 голосов
/ 06 сентября 2011

Я использую проект под ключ Adobe LiveCycle ES 2, который работает на JBoss AS 4.2.1.GA.У меня проблема с получением привязки JNDI для работы в JBoss.Кажется, очень похоже на предыдущий пост: проблема с настройкой JBoss для работы с JNDI , но я определенно не нашел решения.

Это мои настройки.У меня есть файл -ds.xml:

C:\Adobe\Adobe LiveCycle ES2\jboss\server\lc_turnkey\deploy\rmb-ds.xml

Содержимое этого файла выглядит следующим образом:

<datasources>
   <local-tx-datasource>
      <jndi-name>RMB_DS</jndi-name>
      <connection-url>jdbc:sqlserver://localhost\SQLEXPRESS;DatabaseName=rmb</connection-url>
      <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
      <user-name>sa</user-name>
      <password>password</password>
      <check-valid-connection-sql>SELECT 1 FROM sysobjects</check-valid-connection-sql>
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>MS SQLSERVER2000</type-mapping>
      </metadata>
   </local-tx-datasource>
</datasources>

У меня есть проект Java, чей / RMB / WebContent /WEB-INF / web.xml содержит следующее:

<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>java:RMB_DS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

Теперь, каждый раз, когда я развертываю WAR, происходит сбой со следующей ошибкой:

2011-09-06 15:44:17,786 ERROR [org.jboss.deployment.MainDeployer] Could not start deployment: file:/C:/Adobe/Adobe LiveCycle ES2/jboss/server/lc_turnkey/deploy/RMB.war
org.jboss.deployment.DeploymentException: Error during deploy; - nested throwable: (javax.naming.NamingException: resource-ref: java:RMB_DS has no valid JNDI binding. Check the jboss-web/resource-ref.)
    at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:384)
...
Caused by: javax.naming.NamingException: resource-ref: java:RMB_DS has no valid JNDI binding. Check the jboss-web/resource-ref.
    at org.jboss.web.AbstractWebDeployer.linkResourceRefs(AbstractWebDeployer.java:623)

Я на 100% уверенчто сама привязка JNDI верна.Я вижу следующее в веб-консоли> Система> JMX Beans> jboss.jdbc> jboss.jdbc: service = metadata, datasource = RMB_DS

MBean Name: Domain Name:    jboss.jdbc
service:    metadata
datasource: RMB_DS
MBean Java Class:   org.jboss.ejb.plugins.cmp.jdbc.metadata.DataSourceMetaData

Кроме того, используя инструментальные средства LiveCycle, я могу сделать процесс, который срабатываетэтот сервис и запускает некоторый SQL для источника данных java: / RMB_DS ..

ТАК, должно быть что-то не так с моим WAR или web.xml, верно?Я что-то упускаю из виду?

1 Ответ

1 голос
/ 07 сентября 2011

Спасибо Кетану, который великолепен!

Требуется jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <resource-ref>
        <res-ref-name>RMB_DS</res-ref-name>
        <jndi-name>java:/RMB_DS</jndi-name>
    </resource-ref>
</jboss-web>

И изменил исходный файл web.xml, чтобы он имел:

<resource-ref>
   <description>DB Connection</description>
   <res-ref-name>RMB_DS</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
</resource-ref>

Что соответствует rmb-ds.xml

<datasources>
   <local-tx-datasource>
      <jndi-name>RMB_DS</jndi-name>
      <connection-url>jdbc:sqlserver://localhost\SQLEXPRESS;DatabaseName=RMB</connection-url>
      <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
      <user-name>sa</user-name>
      <password>password</password>
      <check-valid-connection-sql>SELECT 1 FROM sysobjects</check-valid-connection-sql>
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>MS SQLSERVER2000</type-mapping>
      </metadata>
   </local-tx-datasource>
</datasources>
...