8.5.2. 使用 JNDI 连接到服务器
如果客户端驻留在与服务器相同的 JVM 中,它可以使用 InVmConnectionFactory 提供的 in-vm 连接器。以下是如何配置 InvmConnectionFactory,如 standalone-full.xml 中找到。
<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"/>
远程客户端应忽略 条目 值的前导 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-remoing 协议。另请注意客户端如何使用 org.wildfly.naming.client.WildFlyInitialContextFactory,这意味着客户端拥有此类及其包含的客户端 JAR 在类路径中的某处。对于 maven 项目,这可以通过包含以下依赖项来实现:
<dependencies>
<dependency>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-jms-client-bom</artifactId>
<type>pom</type>
</dependency>
</dependencies>