这几天都加班忙着完成那本JMS,因为以前都没搞过JMS的具体实现和配置,所以还真是够麻烦的。很多JMS的概念都必须去理解和整理,不过现在总算是把JMS的本地给配置很跑通了,也写点总结给有需要的人。 JMS的具体概念就不介绍了,网上很多。先把JMS的实现方式列出来下吧:
(1)得到一个JNDI初始化上下文(Context)。
(2)根据上下文来查找一个连接工厂TopicConnectFactory/ QueueConnectionFactory(有两种连接工厂,根据是topic/queue来使用相应的类型)。
(3)从连接工厂得到一个连接(Connect 有两种[TopicConnection/ QueueConnection])。
(4)通过连接来建立一个会话(Session)。
(5)查找目的地(Topic/ Queue)。
(6)根据会话以及目的地来建立消息制造者(TopicPublisher/QueueSender)和消费者(TopicSubscriber/QueueReceiver)。
首先关于初始化上下文(Context)因为是本地的WebLogic配置,所以直接newInitialContext()就行了,但如果是远程的那就要得到远程server的Context了,具体方法如下:
Properties pros = new Properties();
pros.put("java.naming.factory.initial","oracle.j2ee.rmi.RMIInitialContextFactory");
pros.put("java.naming.provider.url",service);
pros.put("java.naming.security.principal",user);
pros.put("java.naming.security.credentials",passwd);
returnnew InitialContext(pros);
对于Queue的传输方式,没有什么问题,一开始配置好了之后就测通了,但是Topic就比较迷惑了,主要还是对Topic的了解不够,其实Topic���这样的传输:对于发布到这个主题(Topic)的所有消息进行接受,当然可以通过 messageselector来过滤消息了。也就是说前提是你的Topic接受必须先起来,然后在send的时候起来的接受的Topic就能接到这个主题下的所以消息了。还有一点,Topic接受可以写Receive方法和响应messageListener方法,他们的区别就是Receive只能接受一次,而相应事件则开启之后对于这个主题的所以消息都可以接受。
比较有问题的地方就碰到这些了,下次就具体讲下JMS在WebLogic上的配置方法了。
在WebLogic上的JMS配置其实也不是很麻烦,具体步骤还是比较少的。
1.配置连接工厂(Connection Factories)。
JMS中连接工厂分QueueConnectionFactory和TopicConnectionFactory两种,Weblogic不区分这两种类型。但我们最好还是配置两种工厂类型。在配置连接工厂前必须先配置好JMS Modules,因为连接工厂是在Modules上配置的。
Services->Messaging->JMS Modules点击创建一个新的Jms Module,默认配置就ok了。在module配置好了之后,点击module在新规就会有连接工厂的选项了���入力连接工厂的名字和JNDI的名字就ok了。按照步骤把两种连接工厂都可以建成。
2.配置消息存储(Message Stores)。
WebLogic中消息存储方式可分两种方式,一是把消息保存到文件系统中,二是把消息保存到数据库中。因为我只用过文件存储的方式,所以就介绍下这个方式了,Services->Persistent Stores,New->Create FileStore,输入文件存储的名字和目录,这个目录很重要,开始我以为是本地的一个目录就行了,其实测试之后发现必须是WebLogic的 DefaultDomain下的一个目录才行,所以必须在这个DefaultDomain下建一个可读写的目录,把目录名写上去就ok了。
3.配置JMS服务器(JMS Servers)。
每个JMS Server只能管理一个消息存储介质,针对以上配置,我们配置一个JMS Server管理文件方式,数据库存储方式的JMS Server就不配置了。Services->Messaging->JMS Servers,输入名字和选择刚配置好的消息存储的名字就ok了。
4.配置消息目的地(Destinations)。
这就分为配置Queue和Topic了,配置的方法是一样的,这里就介绍配置Queue的了:
Services->Messaging->JMS Modules,点击刚配置好的Modules,然后新规就有需要配置的选项了,有Queue和Topic还有很多的。选择Queue,输入名字和 JNDI名称,注意的是Subdeploymenet,这个一定要新规一个!否则是有问题的,Queue和Topic都必须新规这个 Subdeploymenet,默认就ok了。这样就可以完成消息目的地的配置了。
以上就是本地WebLogic上的JMS配置方法,因为网上的资料也比较少,所以希望这写简单的介绍能提供点帮助吧。