




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JBOSS建立JMS应用实例环境配置说明Jboss4.2.3 Java ee 5MySql5.0安装jdk,我的目录为C:SunSDK安装jboss.我的目录为D:jboss4.2.3安装mysql配置环境变量JBOSS_HOME D:jboss4.2.3配置环境变量 JAVA_HOME C:SunSDKjdkJBOSS的JMS配置由于没有用到集群所以用JBOSS的default应用即可。1、 配置MySQL数据库的JNDI将MySQL数据库驱动拷到defaultlib下JBOSS没有自带MySQL的数据库驱动。在D:jboss4.2.3docsexamplesjca 下的文件夹下面,有很多不同数据库引用的数据源定义模板。将其中的 mysql-ds.xml 文件Copy到你使用的服务器下,如 D: jboss4.2.3serverdefaultdeploy。修改 mysql-ds.xml 文件的内容,使之能通过JDBC正确访问你的MySQL数据库,如下: MySqlDS jdbc:mysql:/localhost:3306/test com.mysql.jdbc.Driver root rootpasswordorg.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL 这里,定义了一个名为MySqlDS的数据源,其参数包括JDBC的URL,驱动类名,用户名及密码等。通过配置后就可以通过JNDI名java:MySqlDS 访问到配置的Mysql数据库。2、 配置JBOSS的JMS环境将D:jboss4.2.3docsexamplesjms下的mysql-jdbc2-service.xml拷到D:jboss4.2.3serverdefaultdeployjms 下。并将数据库DataSourceBinding 改成name=MySqlDS连到你的MySql数据库将D:jboss4.2.3serverdefaultdeployjms 目录下的hsqldb-jdbc-state-service文件改名为mysql-jdbc-state-service.xml 并将jboss.jca:service=DataSourceBinding,name=MySqlDS 该成name=MySqlDS用于连接你的MySql的数据库。启动JBOSS后在控制台将会看到类似如下的信息就表示默认的JMS的jndi名已经绑定了。JMS的配置成功了。10:14:42,343 INFO ConnectionFactoryBindingService Bound ConnectionManager jboss.jca:service=DataSourceBinding,name=DefaultDS to JNDI name java:DefaultDS10:14:42,984 INFO ConnectionFactoryBindingService Bound ConnectionManager jboss.jca:service=ConnectionFactoryBinding,name=JmsXA to JNDI name java:JmsXA10:14:43,171 INFO ConnectionFactoryBindingService Bound ConnectionManager jboss.jca:service=DataSourceBinding,name=MySqlDS to JNDI name java:MySqlDS10:14:43,968 INFO A Bound to JNDI name: queue/A10:14:44,000 INFO B Bound to JNDI name: queue/B10:14:44,000 INFO C Bound to JNDI name: queue/C10:14:44,000 INFO D Bound to JNDI name: queue/D10:14:44,015 INFO ex Bound to JNDI name: queue/ex10:14:44,046 INFO testTopic Bound to JNDI name: topic/testTopic10:14:44,046 INFO securedTopic Bound to JNDI name: topic/securedTopic10:14:44,062 INFO testDurableTopic Bound to JNDI name: topic/testDurableTopic10:14:44,062 INFO testQueue Bound to JNDI name: queue/testQueue10:14:44,140 INFO myQueue Bound to JNDI name: queue/myQueue10:14:44,203 INFO UILServerILService JBossMQ UIL service available at : /:8093连接到MySQL数据库也可以看到默认的建了几个以jms_开头的数据表。用语保存jms的用户信息和持久化消息。JBOSS的JMS实例JBOSS的JMS环境建立好了以后我们就可以写几个发送接受JMS的程序来验证一下。当你发送一个消息,你不能直接发送到对此消息感兴趣的接受者。而是你发送到一个目的地。对此消息感兴趣的接受者必须连接到目的地,得到此消息或在目的地设置订阅。在JMS中有两种域:topics 和queues 。*一个消息发送到一个topics ,可以有多个客户端。用topic发布允许一对多,或多对多通讯通道。消息的产生者被叫做publisher, 消息接受者叫做subscriber。*queue 是另外一种方式,仅仅允许一个消息传送给一个客户。一个发送者将消息放在消息队列中,接受者从队列中抽取并得到消息,消息就会在队列中消失。第一个接受者抽取并得到消息后,其他人就不能在得到它。为了能发送和接收消息,必须得到一个JMS连接。该连接是使用JMS Provider得到连接的,在得到连接之后,建立一个会话(Session)。然后再建立publisher/sender 来发送消息或subscriber/receiver来接收消息。运行时,如果使用topic 那么publisher 或subscriber 通过一个topic来关联,如果使用queue ,则sender 或receiver通过queue来关联起来。通常,在JMS框架中运转的方法如下:(1) 得到一个JNDI初始化上下文(Context);(2) 根据上下文来查找一个连接工厂TopicConnectFactory/ QueueConnectionFactory (有两种连接工厂,根据是topic/queue来使用相应的类型);(3) 从连接工厂得到一个连接(Connect 有两种TopicConnection/ QueueConnection);(4) 通过连接来建立一个会话(Session);(5) 查找目的地(Topic/ Queue);(6) 根据会话以及目的地来建立消息制造者(TopicPublisher/QueueSender)和消费者(TopicSubscriber/ QueueReceiver).为了得到一个连接和得到一个目的地(用来关联publisher/sender 或subscriber/receiver),必须用provider-specific参数。在D:jboss4.2.3serverdefaultdeployjms下的jbossmq-destinations-service.xml是在配置JMS目的地的xml文件。在文件中已经存在几个缺省的目的地,所以你比较容易明白怎样增加到文件中1、 topics例子package com.msg;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.jms.TopicConnectionFactory;import javax.jms.TopicConnection;import javax.jms.TopicSession;import javax.jms.TopicPublisher;import javax.jms.Topic;import javax.jms.TextMessage;import javax.jms.Session;import javax.jms.JMSException;import java.util.Hashtable;public class HelloPublisher TopicConnection topicConnection;TopicSession topicSession;TopicPublisher topicPublisher;Topic topic;public HelloPublisher(String factoryJNDI, String topicJNDI)throws JMSException, NamingException Hashtable props = new Hashtable();props.put(Context.INITIAL_CONTEXT_FACTORY,erfaces.NamingContextFactory);props.put(Context.PROVIDER_URL, localhost:1099);props.put(java.naming.rmi.security.manager, yes);props.put(Context.URL_PKG_PREFIXES, org.jboss.naming);Context context = new InitialContext(props);TopicConnectionFactory topicFactory = (TopicConnectionFactory) context.lookup(factoryJNDI);topicConnection = topicFactory.createTopicConnection();topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);topic = (Topic) context.lookup(topicJNDI);topicPublisher = topicSession.createPublisher(topic);public void publish(String msg) throws JMSException TextMessage message = topicSession.createTextMessage();message.setText(msg);topicPublisher.publish(topic, message);public void close() throws JMSException topicSession.close();topicConnection.close();public static void main(String args) try HelloPublisher publisher = new HelloPublisher(ConnectionFactory,topic/testTopic);for (int i = 1; i 11; i+) String msg = Hello World no. + i;System.out.println(Publishing message: + msg);publisher.publish(msg);publisher.close(); catch (Exception ex) System.err.println(An exception occurred while testing HelloPublisher25: + ex);ex.printStackTrace();package com.msg;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.jms.TopicConnectionFactory;import javax.jms.TopicConnection;import javax.jms.TopicSession;import javax.jms.TopicSubscriber;import javax.jms.Topic;import javax.jms.Message;import javax.jms.TextMessage;import javax.jms.Session;import javax.jms.MessageListener;import javax.jms.JMSException;public class HelloSubscriber implements MessageListener TopicConnection topicConnection;TopicSession topicSession;TopicSubscriber topicSubscriber;Topic topic;public HelloSubscriber(String factoryJNDI, String topicJNDI)throws JMSException, NamingException Context context = new InitialContext();TopicConnectionFactory topicFactory = (TopicConnectionFactory) context.lookup(factoryJNDI);topicConnection = topicFactory.createTopicConnection();topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);topic = (Topic) context.lookup(topicJNDI);topicSubscriber = topicSession.createSubscriber(topic);topicSubscriber.setMessageListener(this);System.out.println(HelloSubscriber subscribed to topic: + topicJNDI);topicConnection.start();public void onMessage(Message m) try String msg = (TextMessage) m).getText();System.out.println(HelloSubscriber got message: + msg); catch (JMSException ex) System.err.println(Could not get text message: + ex);ex.printStackTrace();public void close() throws JMSException topicSession.close();topicConnection.close();public static void main(String args) try HelloSubscriber subscriber = new HelloSubscriber(TopicConnectionFactory, topic/testTopic); catch (Exception ex) System.err.println(An exception occurred while testing HelloSubscriber: + ex);ex.printStackTrace();2、 queues 例子package com.msg;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.jms.QueueConnectionFactory;import javax.jms.QueueConnection;import javax.jms.QueueSession;import javax.jms.QueueSender;import javax.jms.Queue;import javax.jms.TextMessage;import javax.jms.Session;import javax.jms.JMSException;import java.util.Hashtable;public class HelloQueue QueueConnection queueConnection;QueueSession queueSession;QueueSender queueSender;Queue queue;public HelloQueue(String factoryJNDI, String topicJNDI)throws JMSException, NamingException Hashtable props = new Hashtable();props.put(Context.INITIAL_CONTEXT_FACTORY,erfaces.NamingContextFactory);props.put(Context.PROVIDER_URL, localhost:1099);props.put(java.naming.rmi.security.manager, yes);props.put(Context.URL_PKG_PREFIXES, org.jboss.naming);Context context = new InitialContext(props);QueueConnectionFactory queueFactory = (QueueConnectionFactory) context.lookup(factoryJNDI);queueConnection = queueFactory.createQueueConnection();queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);queue = (Queue) context.lookup(topicJNDI);queueSender = queueSession.createSender(queue);public void send(String msg) throws JMSException TextMessage message = queueSession.createTextMessage();message.setText(msg);queueSender.send(queue, message);public void close() throws JMSException queueSession.close();queueConnection.close();public static void main(String args) try HelloPublisher publisher = new HelloPublisher(ConnectionFactory,topic/testTopic);for (int i = 1; i 11; i+) String msg = Hello World no. + i;System.out.println(Publishing message: + msg);publisher.publish(msg);publisher.close(); catch (Exception ex) System.err.println(An exception occurred while testing HelloPublisher25: + ex);ex.printStackTrace();package com.msg;import java.util.Hashtable;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.Session;import javax.jms.TextMessage;import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSession;import javax.jms.QueueReceiver;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;public class HelloReceQueue implements MessageListener QueueConnection queueConnection;QueueSession queueSession;QueueReceiver queueReceiver;Queue queue;public HelloReceQueue(String factoryJNDI, String topicJNDI)throws JMSException, NamingExceptionContext context = new InitialContext();QueueConnectionFactory queueFactory =(QueueConnectionFactory)context.lookup(factoryJNDI);queueConnection = queueFactory.createQueueConnection();queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);queue
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆市荣昌区人力资源和社会保障局招聘公益性岗位人员1人考试备考题库及答案解析
- 2026瑞昌国际控股校园招聘备考考试题库附答案解析
- 2026中铁北京局招聘备考考试题库附答案解析
- 基于知识图谱的问答-洞察及研究
- 哲学光芒专业引领
- 赞颂母爱之光
- 资本逻辑与性别差异-洞察及研究
- 人工智能导论第4版-课件 第8章-进化计算
- 手指谣大西瓜课件
- 统编版五年级语文上册新课标情境式命题真题卷(二)(含答案)
- 虚拟货币挖矿管理办法
- 2025重庆市涪陵区马武镇人民政府选聘本土人才1人考试参考试题及答案解析
- 2025-2026学年苏少版(2024)小学美术一年级上册教学计划及进度表
- DB3302T1135-2022新建小区室内公共体育设施配置和管理规范
- 2025年装载机行业当前竞争格局与未来发展趋势分析报告
- 水务局面试真题及答案解析:水利行业招聘面试实战
- 2025年飞行服务站无人机培训行业现状分析报告
- 如何上好语文课的讲座
- 2025年高校教师思政素质和师德师风考试题库及答案
- 强迫性障碍护理查房
- 2025年辅警考试公安基础知识考试试题库及参考答案
评论
0/150
提交评论