1

Hermes JMS を使用して JBoss AS 7.1.1.Final で JMS キューをブラウズしようとしていますが、「空の」JNDI ツリーが表示されます。これを調査するために、JBoss サーバーから JNDI ツリー ノードをダンプする簡単なプログラムを作成しました。コードは次のようなものです。

public static void main(String[] args) throws Exception {

     final Properties jndiProperties = getJboss7Properties();
     // final Properties jndiProperties = getHornetQProperties();


     // Dumps the initial context contents
     InitialContext ctx = new InitialContext(jndiProperties);
     listRootJndiContext(ctx);


     // Simple lookup
     System.out.println(ctx.lookup("java:jms/RemoteConnectionFactory")
               .getClass().getName());
}

private static Properties getJboss7Properties() {
     final Properties jndiProperties = new Properties();
     jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY,
               "org.jboss.naming.remote.client.InitialContextFactory");
     jndiProperties.put(Context.PROVIDER_URL, "remote://localhost:4447");
     jndiProperties.put(Context.SECURITY_PRINCIPAL, "guest");
     jndiProperties.put(Context.SECURITY_CREDENTIALS, "guest123");
     return jndiProperties;
}

private static void listRootJndiContext(Context ctx) throws NamingException {
     System.out.println("Listing root JNDI context:");
     NamingEnumeration<NameClassPair> list = ctx.list("");
     if (list.hasMore()) {
          while (list.hasMore()) {
                NameClassPair ncp = list.next();
                System.out.println(ncp.getName() + " (" + ncp.getClassName() + ")");
          }
     } else {
          System.out.println("Empty list!");
     }
}

を呼び出すと、期待どおりに が JMS 接続ファクトリを返すctx.list("")場合でも、返されるリストは常に空です。ctx.lookup("java:jms/RemoteConnectionFactory")

スタンドアロンの HornetQ サーバー (2.2.14.Final) に対してまったく同じコードを実行しようとしました。「古い」jnp プロトコルを使用するように InitialContext プロパティを変更すると、JNDI ツリー ノードが正しくダンプされました。

また、サーバー内 (サーブレット内) で同じコードを実行しようとしましたが (デフォルトの InitialContext() コンストラクターの呼び出しを除く)、期待どおりに動作しました (JNDI ツリー ノードのダンプ)。

standard.xml などで構成する権限はありますか?

この機能 (「リモート JNDI ブラウジング」) は JBoss AS 7.1.1.Final に実装されていますか?

4

0 に答える 0