8.5.2. JNDI を使用したサーバーへの接続

クライアントがサーバーと同じ JVM 内に存在する場合は、InVmConnectionFactory が提供する in-vm コネクターを使用できます。以下は、standalone-full.xml などでみられる InvmConnectionFactory の典型的な設定方法です。

<connection-factory
  name="InVmConnectionFactory"
  entries="java:/ConnectionFactory"
  connectors="in-vm" />

entries 属性の値に注意してください。InVmConnectionFactory を使用するクライアントは、以下の例のように、ルックアップ時に先頭の java:/ を省略します。

InitialContext ctx = new InitialContext();
ConnectionFactory cf = (ConnectionFactory)ctx.lookup("ConnectionFactory");
Connection connection = cf.createConnection();

リモートクライアントでは RemoteConnectionFactory を使用しますが、これは通常以下のような設定になります。

<connection-factory
  name="RemoteConnectionFactory"
  scheduled-thread-pool-max-size="10"
  entries="java:jboss/exported/jms/RemoteConnectionFactory"
  connectors="http-connector"/>

リモートクライアントでは entries の値の先頭の java:jboss/exported/ を無視し、以下のコードスニペットの例に従います。

final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.wildfly.naming.client.WildFlyInitialContextFactory");
env.put(Context.PROVIDER_URL, "http-remoting://remotehost:8080");
InitialContext remotingCtx = new InitialContext(env);
ConnectionFactory cf = (ConnectionFactory) remotingCtx.lookup("jms/RemoteConnectionFactory");

PROVIDER_URL プロパティーの値と、クライアントの JBoss EAP http-remoting プロトコルの使用方法に注意してください。クライアントの org.wildfly.naming.client.WildFlyInitialContextFactory の使用方法にも注意してください。これはクライアントがこのクラスを持ち、クラスパスのどこかにクライアント JAR を包含するということを意味します。Maven プロジェクトでは、以下の依存関係を含めることで実現できます。

<dependencies>
  <dependency>
    <groupId>org.wildfly</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <type>pom</type>
  </dependency>
</dependencies>