本章我们将研究OpenJMS的配置信息。
OpenJMS的连接器提供了TCP,RMI,HTTP和SSL等协议连接方式。
也就是提供了以下类型的连接器
连接器 | 描述 |
---|---|
TCP | 使用TCP/IP套接字 |
TCPS | 使用安全套接字 |
RMI | 使用RMI |
HTTP | 使用HTTP提供连接 |
HTTPS | 使用基于安全套接字层的HTTP连接 |
Embedded | 同一个JVM中通信 |
Hashtable properties = new Hashtable(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.exolab.jms.jndi.InitialContextFactory"); properties.put(Context.PROVIDER_URL, "tcp://localhost:3035/"); Context context = new InitialContext(properties);
Provider_URL信息我们在java开源消息服务(OpenJMS&ActiveMQ)-OpenJMS学习笔记三(调用示例)中提到过,当时说tcp或者rmi开头jndi服务地址都可以用。
就是使用的连接器类型不一样,那我当时配置了TCP和RMI连接器。
Hashtable properties = new Hashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.exolab.jms.jndi.InitialContextFactory");
properties.put(Context.PROVIDER_URL, "tcps://localhost:3035/");
properties.put("org.exolab.jms.net.tcps.keyStore", "<keystore>");
properties.put("org.exolab.jms.net.tcps.keyStorePassword", "<password>");
properties.put("org.exolab.jms.net.tcps.trustStore", "<keystore>");
Context context = new InitialContext(properties);
名字 | 描述 |
---|---|
"org.exolab.jms.net.tcps.keyStore" | keystore文件的路径,如果不指定,将使用默认的keystore。同义于"javax.net.ssl.keyStore"系统变量。 |
"org.exolab.jms.net.tcps.keyStorePassword" | keystore的密码。如果不指定,将使用默认的密码。同义于"javax.net.ssl.keyStorePassword" 系统变量。 |
"org.exolab.jms.net.tcps.keyStoreType" | keystore类型,如果不指定,使用默认的“JKS”。同义于"javax.net.ssl.keyStoreType" 系统变量。 |
"org.exolab.jms.net.tcps.trustStore" | truststore路径. 如果不指定,将使用默认的truststore.同义于"javax.net.ssl.trustStore"系统变量。 |
"org.exolab.jms.net.tcps.trustStorePassword" | truststore的密码。如果不指定,将使用默认的密码。同义于"javax.net.ssl.trustStorePassword"系统变量。 |
"org.exolab.jms.net.tcps.trustStoreType" | truststore 类型,如果不指定,使用默认的“JKS”。同义于"javax.net.ssl.trustStoreType" 系统变量。 |
Hashtable properties = new Hashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.exolab.jms.jndi.InitialContextFactory");
properties.put(Context.PROVIDER_URL, "rmi://localhost:1099/");
Context context = new InitialContext(properties);
Hashtable properties = new Hashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.exolab.jms.jndi.InitialContextFactory");
properties.put(Context.PROVIDER_URL, "http://localhost:80/");
Context context = new InitialContext(properties);
名字 | 描述 |
---|---|
"org.exolab.jms.net.http.proxyHost" | 指定代理服务器地址.同义于"http.proxyHost"系统变量. |
"org.exolab.jms.net.http.proxyPort" | I指定代理服务主机端口. 同义于"http.proxyPort" 系统变量. |
"org.exolab.jms.net.http.proxyUser" | 指定登入代理服务器的用户名 |
"org.exolab.jms.net.http.proxyPassword" | 指定登入代理服务器的密码 |
Hashtable properties = new Hashtable(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.exolab.jms.jndi.InitialContextFactory"); properties.put(Context.PROVIDER_URL, "https://localhost:443/"); properties.put("org.exolab.jms.net.https.keyStore", "<keystore>"); properties.put("org.exolab.jms.net.https.keyStorePassword", "<password>"); properties.put("org.exolab.jms.net.https.trustStore", "<keystore>"); Context context = new InitialContext(properties);
名字 | 描述 | |
"org.exolab.jms.net.https.keyStore" | keystore文件的路径,如果不指定,将使用默认的keystore。同义于"javax.net.ssl.keyStore"系统变量。 | |
"org.exolab.jms.net.https.keyStorePassword" | keystore的密码。如果不指定,将使用默认的密码。同义于"javax.net.ssl.keyStorePassword" 系统变量。 | |
"org.exolab.jms.net.https.keyStoreType" | keystore类型,如果不指定,使用默认的“JKS”。同义于"javax.net.ssl.keyStoreType" 系统变量。 | |
"org.exolab.jms.net.https.trustStore" | truststore路径. 如果不指定,将使用默认的truststore. 同义于"javax.net.ssl.trustStore"系统变量。 | |
"org.exolab.jms.net.https.trustStorePassword" | truststore的密码。如果不指定,将使用默认的密码。同义于"javax.net.ssl.trustStorePassword"系统变量。 | |
"org.exolab.jms.net.https.trustStoreType" | truststore 类型,如果不指定,使用默认的“JKS”。同义于"javax.net.ssl.trustStoreType" 系统变量。 | |
"org.exolab.jms.net.https.proxyHost" | 指定代理服务器地址.同义于"https.proxyHost"系统变量. | |
"org.exolab.jms.net.https.proxyPort" | I指定代理服务主机端口. 同义于"https.proxyPort" 系统变量. | |
"org.exolab.jms.net.https.proxyUser" | 指定登入代理服务器的用户名 | |
"org.exolab.jms.net.https.proxyPassword" | 指定登入代理服务器的密码 |
Hashtable properties = new Hashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.exolab.jms.jndi.InitialContextFactory");
properties.put(Context.PROVIDER_URL, "embedded://");
Context context = new InitialContext(properties);
<Connectors>
<Connector scheme="tcp">
<ConnectionFactories>
<ConnectionFactory name="ConnectionFactory" />
</ConnectionFactories>
</Connector>
<Connector scheme="rmi">
<ConnectionFactories>
<QueueConnectionFactory name="JmsQueueConnectionFactory" />
<TopicConnectionFactory name="JmsTopicConnectionFactory" />
</ConnectionFactories>
</Connector>
</Connectors>
<Connector scheme="tcp"> <ConnectionFactories> <ConnectionFactory name="TCPConnectionFactory"/> </ConnectionFactories> </Connector>
<Connector scheme="tcps"> <ConnectionFactories> <ConnectionFactory name="TCPSConnectionFactory"/> </ConnectionFactories> </Connector>
<Connector scheme="rmi"> <ConnectionFactories> <ConnectionFactory name="RMIConnectionFactory"/> </ConnectionFactories> </Connector>
说明
RMI我们还可以指定注册的主机信息。通过
来配置,host如果不指定默认为localhost,port不指定默认为1099.<RmiConfiguration embeddedRegistry="false" registryHost="<registry-host>" registryPort="<registry-port>"> </RmiConfiguration>
<Connector scheme="http"> <ConnectionFactories> <ConnectionFactory name="HTTPConnectionFactory"/> </ConnectionFactories> </Connector>
<Connector scheme="https">
<ConnectionFactories>
<ConnectionFactory name="HTTPSConnectionFactory"/>
</ConnectionFactories>
</Connector>
HTTPS的配置也比较复杂,需要导入keystore等信息。具体请参阅:http://openjms.sourceforge.net/config/https.html
<Connector scheme="embedded">
<ConnectionFactories>
<ConnectionFactory name="VMConnectionFactory"/>
</ConnectionFactories>
</Connector>