【问题标题】:JNDI binding in JBoss (LiveCycle turnkey)JBoss 中的 JNDI 绑定(LiveCycle 统包)
【发布时间】:2011-11-11 01:06:20
【问题描述】:

我正在使用在 JBoss AS 4.2.1.GA 上运行的 Adob​​e LiveCycle ES 2 统包项目。我在让 JNDI 绑定在 JBoss 中工作时遇到问题。这似乎与之前的帖子 problem configure JBoss to work with 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 绑定本身是正确的。我可以在 Web 控制台 > 系统 > 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 工作台,我可以创建一个访问该服务并针对数据源 java:/RMB_DS.. 运行一些 SQL 的进程。

所以,我的 WAR 或 web.xml 一定有问题,对吧?我错过了什么明显的东西吗?

【问题讨论】:

    标签: java jndi livecycle jboss-4.2.x


    【解决方案1】:

    感谢 Ketan,他很棒!

    需要一个 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2019-11-14
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      相关资源
      最近更新 更多