【问题标题】:JBoss datasource reference in web.xml failsweb.xml 中的 JBoss 数据源引用失败
【发布时间】:2015-05-19 12:14:40
【问题描述】:

我的 web.xml 中有以下配置

<resource-ref id="ResourceRef_1234567890">
    <res-ref-name>jdbc/pcbDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Application</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

当我部署我的应用程序时,我收到以下错误。

16:29:57,745 错误 [org.jboss.as.controller.management-operation] (HttpManagementService-threads - 6) JBAS014612: 操作 ("deploy") 失败 - 地址: ([("deployment" => " APP-5.3.ear")]) - 故障描述:{"JBAS014771: 缺少/不可用依赖项的服务" => [ "jboss.naming.context.java.module.\"App-5.3\".\"WebArchive-5.1\".env.jdbc.pcbDB 丢失 [jboss.naming.context.java.jboss.resources.jdbc.pcbDB ]" ]}

随后发生回滚,

16:29:57,777 错误 [org.jboss.as.server] (HttpManagementService-threads - 6) JBAS015870:部署“APP-5.3.ear”的部署已回滚,并显示以下失败消息: {“JBAS014771:缺少/不可用依赖项的服务”=> [ "jboss.naming.context.java.module.\"App-5.3\".\"WebArchive-5.1\".env.jdbc.pcbDB 丢失 [jboss.naming.context.java.jboss.resources.jdbc.pcbDB ]" ]}

我在standalone.xml 中创建了相应的数据源。从 Web 控制台测试连接成功....

Name: pcbdb

JNDI: java:/jdbc/pcbDB

这是我在standalone.xml中的数据源定义.....

<!--Here is datasource config.... As I had many spaces in xml config I couldn't add it as code..... Now I have copied it by the char comes with tilt ~ -->
                <datasource jndi-name="java:/jdbc/pcbDB" pool-name="pcbdb" enabled="true">
                    <connection-url>jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=off)(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)(SERVER=DEDICATED)))</connection-url>
                    <driver>com.oracle</driver>
                    <pool>
                        <min-pool-size>3</min-pool-size>
                        <max-pool-size>5</max-pool-size>
                    </pool>
                    <security>
                        <user-name>pcbdb</user-name>
                        <password>passwd</password>
                    </security>
                    <validation>
                        <exception-sorter class-name="org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter"/>
                    </validation>
                    <timeout>
                        <blocking-timeout-millis>5000</blocking-timeout-millis>
                        <idle-timeout-minutes>5</idle-timeout-minutes>
                    </timeout>
                </datasource>

请给出解决方案.... 同样,我也有 context.lookup。好像是initCtx.lookup("java:comp/env/jdbc/pcbDB");……这样对吗……?

【问题讨论】:

  • 能否请您添加您的实际数据源定义?其次,你可能不想要&lt;res-auth&gt;Application&lt;/res-auth&gt; &lt;res-sharing-scope&gt;Shareable&lt;/res-sharing-scope&gt;。相反,它应该是 &lt;res-auth&gt;Container&lt;/res-auth&gt; 。容器将找出 auth 方法和连接池。不需要在应用程序中这样做,实际上违背了目的。
  • 我已经添加了数据源定义,在帖子中......
  • initCtx.lookup("java:comp/env/jdbc/pcbDB"); 成功我认为....但我不太确定,因为我的整体部署失败....
  • 好的 - 它必须在您的应用程序包装中。这就像从旧版本的 JBoss 迁移到新版本的应用程序吗?您很可能拥有希望数据源引用java:comp/env/jdbc/pchDB 的部署描述符。此线索在错误消息 - jboss.naming.context.java.module.\"App-5.3\".\"WebArchive-5.1\".env.jdbc.pcbDB is missing 中提供。最后,您应该将 &lt;res-auth&gt;Application&lt;/res-auth&gt; 更改为 &lt;res-auth&gt;Container&lt;/res-auth&gt;,因为您在数据源定义中定义了用户 ID/密码。
  • 我尝试将其部署为,- 通过评论整个 &lt;resource-ref&gt; 部分。让我尝试将其从Application 更改为Container 的选项。它不是从 JBoss 低版本到高版本的迁移。而是从 Websphere 迁移到 JBoss。关于这些,- resource-ref 我有 ibm-web-bnd.xmi 要迁移到 JBoss。当我对此进行调查时,据说喜欢忽略。我也有ibm-web-ext.xmi。也许我应该将这些作为另一个问题提交。但这是我的场景。

标签: database jboss war jndi web.xml


【解决方案1】:

JDNI 查找失败,-java:comp/env/jdbc/pcbDB

JNDI 查找此字符串,-java:/jdbc/pcbDB 成功....

【讨论】:

    猜你喜欢
    • 2021-12-02
    • 2013-08-03
    • 1970-01-01
    • 2019-01-31
    • 2018-06-02
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    相关资源
    最近更新 更多