1

我正在从 JBoss AS 4.0.4.GA 升级到 JBoss 6.0.0.Final。我一直无法从外部 Java 客户端查找 HornetQ 主题,所以我决定编写一个小的测试 Java 程序来简单地查找数据源。该查找失败。我可以在 Web 控制台中看到 DataSource,它具有:

Pool JNDI Name = MyDS

我曾经(使用 JBoss 4.0.4.GA)使用“java:/MyDS”查找数据源,但这不起作用。我看到一些关于无法从 AS 外部查找对象(队列、主题、数据源、EJB 等)的讨论。如果是这种情况,我会感到惊讶,但如果是这样,那么我该如何禁用该“功能”?

DS 在 server/myconf/deploy/mysql-ds.xml 中:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <local-tx-datasource>
        <jndi-name>MyDS</jndi-name>
        <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
        <driver-class>com.mysql.jdbc.Driver</driver-class>
        <user-name>xxxxxxxx</user-name>
        <password>xxxxxxxx</password>
        <prepared-statement-cache-size>50</prepared-statement-cache-size>
        <min-pool-size>20</min-pool-size>
        <max-pool-size>40</max-pool-size>
        <metadata>
            <type-mapping>mySQL</type-mapping>
        </metadata>
    </local-tx-datasource>
</datasources>

查找 DS 的 Java 程序是:

env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(javax.naming.Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
env.put(javax.naming.Context.PROVIDER_URL, "jnp://localhost:1099");

InitialContext ctx = new InitialContext(env);
Object o = ctx.lookup("java:/MyDS");

查找行抛出 NameNotFoundException:

javax.naming.NameNotFoundException: MyDS not bound

我已经尝试使用“MyDS”而不是“java:/MyDS”进行查找,但它仍然失败。我认为问题不在于我用于查找的名称,而是阻止我从外部应用程序进行任何查找的东西——如果是这种情况,我需要启用此类查找。

4

1 回答 1

2

更新数据源定义,如:

<use-java-context>false</use-java-context>

例如

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
    <jndi-name>MyDS</jndi-name>
    <use-java-context>false</use-java-context>
    <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>xxxxxxxx</user-name>
    <password>xxxxxxxx</password>
    <prepared-statement-cache-size>50</prepared-statement-cache-size>
    <min-pool-size>20</min-pool-size>
    <max-pool-size>40</max-pool-size>
    <metadata>
        <type-mapping>mySQL</type-mapping>
    </metadata>
</local-tx-datasource>
</datasources>
于 2013-04-02T09:27:34.670 回答