1

JBoss AS 4.0.4.GA から JBoss 6.0.0.Final にアップグレードしています。外部 Java クライアントから HornetQ トピックをルックアップできなかったため、DataSource の単純なルックアップを行う小さなテスト Java プログラムを作成することにしました。そのルックアップは失敗しています。Web コンソールで DataSource を確認できます。

Pool JNDI Name = MyDS

以前は (JBoss 4.0.4.GA で) "java:/MyDS" を使用して DataSource をルックアップしていましたが、うまくいきません。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

「java:/MyDS」ではなく「MyDS」だけでルックアップを試みましたが、それでも失敗します。問題はルックアップに使用している名前ではなく、外部アプリケーションからのルックアップを妨げているものだと思います。その場合は、そのようなルックアップを有効にする必要があります。

4

1 に答える 1