3

JMS キューにメッセージを投稿するのに役立つように、基礎となるアーキテクチャ コンポーネントに初期コンテキスト名を指定する必要があるという状況に直面しました。

正確なコンテキスト ファクトリ名を指定するにはどうすればよいですか? これはおそらく、org.jnp.interfaces.namingcontextfactoryGoogle の結果に基づいて使用される文字列 " " であると推測されます。おそらくjbossサーバー構成を出発点として、この文字列に到達するための正式な方法は何ですか?

ありがとう

4

1 に答える 1

1

初期コンテキストは、JMS キューなどのオブジェクトを検索できるJNDI名前空間への参照です。少し前にこのチュートリアルを書いたので、参考になるかもしれません。

リモートjboss サーバーの場合、これが必要な 3 つの基本があります (デフォルト ポートを使用):

  • java.naming.factory.initial : org.jnp.interfaces.NamingContextFactory
  • java.naming.factory.url.pkgs : org.jboss.naming:org.jnp.interfaces
  • java.naming.provider.url : <ホスト名>:1099

コードは次のようになります。

import javax.naming.*;
import javax.jms.*;
import java.util.*;
.....
Properties jndiProps = new Properties();
jndiProps.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
jndiProps.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
jndiProps.put("java.naming.provider.url", "localhost:1099");
Context ctx = new InitialContext(jndiProps);
Queue jmsQueue = (Queue)ctx.lookup("jndi-name-of-queue");

コードがjboss サーバーで実行されている場合、これらのプロパティは暗黙的であるため必要ありません。

import javax.naming.*;
import javax.jms.*;
.....
Context ctx = new InitialContext(); // no properties needed
Queue jmsQueue = (Queue)ctx.lookup("jndi-name-of-queue");
于 2013-02-22T18:38:55.373 に答える