资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
摘自:摘自:http:/blog.csdn.net/gx_ljy/archive/2002/07/19/6592.aspx 一个简单的一个简单的JMS客户端应用客户端应用 作者tag:java/jmsJ2EE应用客户端通常是用来访问安装在服务器端的J2EE组件。客户端是一个 类文件,是一个简单的、独立的、运行在服务器外的程序。它描述了JMS应用 必须完成的基本工作: 创建连接和会话 创建消息生产者和消费者 发送和接收消息 在J2EE应用中,以上工作全部或者部分由EJB容器完成。 本文涵盖以下主题: 配置运行J2EE客户端和应用的环境 同步接收消息的点对点(PTP)例子 使用监听器的订阅/发布(pub/sub)例 子 每一个例子都包含两个程序:一个发送消息,另一个接收消息。可以在两个窗口 中运行。 1 配置运行应用的环境 在运行例子前,必须确定运行环境已经配置好了。Table 1显示如何配置环境变 量。Before you can run the examples, you need to make sure your environment is set appropriately. Table 1 shows how to set the environment variables needed to run J2EE applications on Windows and UNIX platforms. Table 1: Environment Settings for Compiling and Running J2EE Applications Platfor m Variable Name Values Windows %JAVA_HOME % Directory where the JavaTM 2 SDK, Standard Edition, version 1.3.1 is installed %J2EE_HOME % Directory where the J2EE 1.3 SDK is installed, usually C:j2sdkee1.3 %CLASSPATH % Include the following: .;%J2EE_HOME%libj2ee.jar;%J2EE_HOME%libloc ale %PATH% Include %J2EE_HOME%bin $JAVA_HOME Directory where the Java 2 SDK, Standard Edition, version 1.3.1 is installed $J2EE_HOME Directory where the J2EE 1.3 SDK is installed, usually $HOME/j2sdkee1.3 $CLASSPATH Include the following: .:$J2EE_HOME/lib/j2ee.jar:$J2EE_HOME/lib/local e UNIX $PATH Include $J2EE_HOME/bin 2 一个简单的一个简单的PTP例子例子 本节描述了PTP客户端程序怎样发送、接收消息 步骤: 编写PTP客户端程序 编译PTP客户端 运行JMS提供者(一般指JMS服务器) 创建JMS管理对象 运行PTP客户端 删除队列 2.1 编写编写 PTP客户端程序客户端程序 消息发送程序SimpleQueueSender.java完成以下任务: 1. 用JNDI查找队列连接工厂 (QueueConnectionFactory) 和消息队 列(Queue) 2. 创建连接(connection)和会话 (session) 3. 创建消息发送者(QueueSender) 3. 创建消息(TextMessage) 5. 发送消息到队列 6. 发送控制消息表明消息末尾 7. 在finally代码块中关闭连接 (connection),关闭连接则自动关闭会 话和消息发送 消息接收程序SimpleQueueReceiver.java 完成以下任务: 1. 通过JNDI查找队列连接工厂 (QueueConnectionFactory )和队列 (queue) 2. 创建连接(connection )和会话 (session) 3. 创建消息接收者(QueueReceiver) 4. 开始连接,传送消息 5. 从队列中接收消息,直至消息接受完毕 6. 在finally代码块中关闭连接,关闭连接 则自动关闭消息接收 有几种方式调用receive方法实现消息同步接收。 如果没有定义参数或者参数为 0,方法将一直处于封锁状态,直至消息到来 Message m = queueReceiver.receive(); Message m = queueReceiver.receive(0); 对于一个简单的客户端程序, 完全没有必要用这种方式。 但如果不想让程序不必要的消耗系统资源,可以采取以下的一种方式: 调用receive(long timeout)方法, 超时参数timeout大于0。receive (long timeout)根据指定的超时参数 等待一个消息的到来,如果在这个时间 内有可用的消息,则返回消息。如果超 时后任没有可用的消息,则返回NULL Message m = queueReceiver.receive(1); / 1 millisecond 调用reveiveNoWait()方法,如果有可 用的消息到达,reveiveNoWait()方法 将返回这个消息。 Message m = queueReceiver.receiveNoWait(); SimpleQueueReceiver 在无限循环 while loop中调用带超时参数的receive方 法接收消息。调用 receiveNoWait 方法也将得到同样的结果。 The SimpleQueueReceiver program uses an indefinite while loop to receive messages, calling receive with a timeout argument. Calling receiveNoWait would have the same effect. 2.2 编译编译PTP客户端客户端 按以下步骤编译PTP样例: 1. 确定配置好环境变量,参见 Table 4.1, “Environment Settings for Compiling and Running J2EE Applications“. 2. 在DOS中编译以下两个源文件: javac SimpleQueueSender.java javac SimpleQueueReceiver.java 2.3 运行运行JMS服务服务 如果使用J2EE 1.3 SDK,在DOS窗口中输入以下命令行,运行J2EE服务器: j2ee -verbose 一直等待,直至窗口中出现提示message J2EE server startup complete 2.4 创建创建JMS管理对象管理对象Creating the JMS Administered Objects 在编译客户端的窗口中, 使用j2eeadmin命令行创建一个名为MyQueue的队 列。最后一个参数表示创建的是哪一种消息目的。 j2eeadmin -addJmsDestination MyQueue queue 当消息队列创建之后,输入以下命令行: j2eeadmin -listJmsDestination 本例中使用由J2EE 1.3 SDK 提供的、缺省的队列连接工厂 QueueConnectionFactory 。你可以创建自己的连接工厂。 2.5 运行运行PTP客户端客户端 步骤: 1. 运行 SimpleQueueSender 程序,发送消 息,首先要设置 jms.properties 的值 在windows系统中,输入以下命令行: java -Djms.properties=%J2EE_HOME%confi gjms_client.properties SimpleQueueSender MyQueue 3 在UNIX系统下,输入以下命令行: java -Djms.properties=$J2EE_HOME/config/jms_client.properties SimpleQueueSender MyQueue 3 程序输出如下: Queue name is MyQueue Sending message: This is message 1 Sending message: This is message 2 Sending message: This is message 3 2. 在同一个窗口中,运行 SimpleQueueReceiver 程序,指定队列 名称。命令行如下: Windows: java -Djms.properties=%J2EE_HOME%confi gjms_client.properties SimpleQueueReceiver MyQueue UNIX: java -Djms.properties=$J2EE_HOME/config /jms_client.properties SimpleQueueReceiver MyQueue 输出如下: Queue name is MyQueue Reading message: This is message 1 Reading message: This is message 2 Reading message: This is message 3 3. 如果按相反的顺序运行程序,先运行 SimpleQueueReceiver ,则先显示出队 列名称, 然后等待消息的到来。Now try running the programs in the opposite order. Start the SimpleQueueReceiver program. It displays the queue name and then appears to hang, waiting for messages. 4. 在不同的窗口中,运行 SimpleQueueSender ,当发送消息, SimpleQueueReceiver 接收消息,然后 退出。 2.6 删除队列删除队列Deleting the Queue 删除创建的队列: j2eeadmin -removeJmsDestination MyQueue 3 一个简单的发布一个简单的发布/订阅消息样例订阅消息样例 本节描述了使用消息监听器异步消费消息的例子。 步骤: 编写订阅/发布(pub/sub)客户端程序 编译订阅/发布(pub/sub)客户端 运行JMS提供者(一般指JMS服务器) 创建JMS管理对象 运行订阅/发布( pub/sub)客户端 删除主题,停止服务 3.1 编写编写Pub/Sub客户端程序客户端程序 SimpleTopicPublisher.java 完成以下任务: 1. 用JNDI查找主题连接工厂 (TopicConnectionFactory ) 和消息 主题(topic) 2. 创建连接( connection)和会话 ( session) 3. 创建消息发布者(TopicPublisher) 3. 创建消息(Tex
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号