- 浏览: 214788 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
a66756675:
...
tomcat:tomcat的OutOfMemoryError解决 -
ooo456mmm:
说的对,如果用Mina框架来处理,要简单很多了
NIO socket服务器注意的几点. -
long_ltoy:
这样的话,看上去是代替了session,但这不和session ...
在JSP中使用JAVABEAN代替Session -
linzx0212:
关注下,不错……
tomcat:tomcat的OutOfMemoryError解决 -
liudeh_009:
总结得很好
NIO socket服务器注意的几点.
<!----><st1:city><st1:place>Enterprise</st1:place></st1:city> JavaBeans Distilled<!----><o:p></o:p>
<o:p> </o:p>
作者: Tnk Luo<o:p></o:p>
<o:p> </o:p>
第七次:
<o:p> </o:p>
消息驱动Bean(续)<o:p></o:p>
<o:p> </o:p>
JMS 应用客户程序<o:p></o:p>
To get a better idea of how JMS is used, we can create a Java application whose sole purpose is receiving and processing reservation messages. We will develop a very simple JMS client that simply prints a description of each ticket as it receives the messages. We'll assume that the TravelAgent EJB is using the TextMessage to send a description of the ticket to the JMS clients. The following code shows how the JMS application client might look:<o:p></o:p>
为更好的理解如何使用JMS,可以开发一个Java应用,其唯一的用途在于接收和处理预定消息。在这里,将开发一个非常简单的JMS客户。当该客户接收到消息时,会打印出所每张票的描述信息。假定TravelAgent EJB使用TextMessage以发送票的描述给JMS客户。下列代码显示了JMS应用客户可能的样子:<o:p></o:p>
import javax.jms.Message;<o:p></o:p>
import javax.jms.TextMessage;<o:p></o:p>
import javax.jms.TopicConnectionFactory;<o:p></o:p>
import javax.jms.TopicConnection;<o:p></o:p>
import javax.jms.TopicSession;<o:p></o:p>
import javax.jms.Topic;<o:p></o:p>
import javax.jms.Session;<o:p></o:p>
import javax.jms.TopicSubscriber;<o:p></o:p>
import javax.jms.JMSException;<o:p></o:p>
import javax.naming.InitialContext;<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
public class JmsClient_1 implements javax.jms.MessageListener {<o:p></o:p>
<o:p></o:p>
public static void main(String [] args) throws Exception {<o:p></o:p>
<o:p></o:p>
if(args.length != 2)<o:p></o:p>
throw new Exception("Wrong number of arguments");<o:p></o:p>
<o:p></o:p>
new JmsClient_1(args[0], args[1]);<o:p></o:p>
<o:p></o:p>
while(true){Thread.sleep(10000);}<o:p></o:p>
<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public JmsClient_1(String factoryName, String topicName) throws Exception {<o:p></o:p>
<o:p></o:p>
InitialContext jndiContext = getInitialContext();<o:p></o:p>
<o:p></o:p>
TopicConnectionFactory factory = (TopicConnectionFactory)<o:p></o:p>
jndiContext.lookup("TopicFactoryNameGoesHere");<o:p></o:p>
<o:p></o:p>
Topic topic = (Topic)jndiContext.lookup("TopicNameGoesHere");<o:p></o:p>
<o:p></o:p>
TopicConnection connect = factory.createTopicConnection();<o:p></o:p>
<o:p></o:p>
TopicSession session = <o:p></o:p>
connect.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); <o:p></o:p>
<o:p></o:p>
TopicSubscriber subscriber = session.createSubscriber(topic);<o:p></o:p>
<o:p></o:p>
subscriber.setMessageListener(this);<o:p></o:p>
<o:p></o:p>
connect.start();<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public void onMessage(Message message) {<o:p></o:p>
try {<o:p></o:p>
<o:p></o:p>
TextMessage textMsg = (TextMessage)message;<o:p></o:p>
String text = textMsg.getText();<o:p></o:p>
System.out.println("\n RESERVATION RECIEVED:\n"+text);<o:p></o:p>
<o:p></o:p>
} catch(JMSException jmsE) {<o:p></o:p>
jmsE.printStackTrace();<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
public static InitialContext getInitialContext() {<o:p></o:p>
// 创建具体产品厂商的JNDI上下文<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
JmsClient_1的构建器含有来自JNDI InitialContext的TopicConnectionFactory和Topic。这些对象是使用具体厂商产品的properties创建的,从而使得客户能够连接到TravelAgent EJB使用的同一JMS供应者。比如,WebLogic应用服务器中getInitialContext()方法的代码如下:(JNDI也允许将properties放置在jndi.properties文件中,该文件包含有用于InitialContext的property值,并能够在运行时被动态找到。本书中,显式的给出了properties值。)<o:p></o:p>
public static InitialContext getInitialContext() {<o:p></o:p>
Properties env = new Properties();<o:p></o:p>
env.put(Context.SECURITY_PRINCIPAL, "guest");<o:p></o:p>
env.put(Context.SECURITY_CREDENTIALS, "guest");<o:p></o:p>
env.put(Context.INITIAL_CONTEXT_FACTORY,<o:p></o:p>
"weblogic.jndi.WLInitialContextFactory");<o:p></o:p>
env.put(Context.PROVIDER_URL, "t3://localhost:7001");<o:p></o:p>
return new InitialContext(env);<o:p></o:p>
}<o:p></o:p>
一旦客户获得了TopicConnectionFactory和Topic,就可以采取和TravelAgent EJB相同的方式创建TopicConnection和TopicSession。它们的主要区别在于这里的TopicSession对象创建了TopicSubscriber对象,而不是TopicPublisher。其中,TopicSubscriber被明确设计成处理来自特定Topic的消息:<o:p></o:p>
TopicSession session = <o:p></o:p>
connect.createTopicSession(false,Session.AUTO_ACKNOWLEDGE); <o:p></o:p>
<o:p></o:p>
TopicSubscriber subscriber = session.createSubscriber(topic);<o:p></o:p>
<o:p></o:p>
subscriber.setMessageListener(this);<o:p></o:p>
<o:p></o:p>
connect.start();<o:p></o:p>
TopicSubscriber能直接接收消息,或者能够将消息的处理委派给接口javax.jms.MessageLister。在例子中,JmsClient_1实现了MessageListener接口,使得它可以处理消息。MessageListener对象实现了单一的方法,onMessage(),每当新消息发送到订阅者的topic中时,该方法都会被调用。在这里,每次TravelAgent EJB发送预定消息到topic中时,JMS客户中的onMessage()方法都会被调用,使得它能够接收到消息的拷贝并处理它:<o:p></o:p>
public void onMessage(Message message) {<o:p></o:p>
try {<o:p></o:p>
TextMessage textMsg = (TextMessage)message;<o:p></o:p>
String text = textMsg.getText();<o:p></o:p>
System.out.println("\n RESERVATION RECIEVED:\n"+text);<o:p></o:p>
<o:p></o:p>
} catch(JMSException jmsE) {<o:p></o:p>
jmsE.printStackTrace();<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
<o:p> </o:p>
待续。。。。。。。。
<o:p> </o:p>
(作者其它文章:http://www.csdn.net/develop/author/netauthor/worldheart/ )
发表评论
-
Java字典:如何从程序员升级到架构师.
2012-03-24 23:32 0最近好多同学问学习java ... -
一个Java程序员应该掌握的10项技能
2011-12-08 12:56 9061、语法:必须比较熟 ... -
自定义log4j中的DailyRollingFileAppender
2011-03-11 22:47 4059需求: 日志内容是自定义的。例如,登录信息记录到一个日志文 ... -
google 测试
2010-05-11 16:32 781在Google,测试有一个721的原则:70%的测试工作在底层 ... -
项目测试风险总结
2009-12-01 11:38 993随着项目规模的扩大,项目的复杂性也逐渐增加,在项目中做好风险控 ... -
性能测试总结之性能监控篇
2009-12-01 11:35 1587在性能测试的整个流程当中,监控起着至关重要的作用。因为在性 ... -
如何编写高质量的Java代码
2009-10-14 09:17 1174如何编写高质量的Java代码: 1、 养成良好的习惯及 ... -
一直在用的类注释
2009-10-10 09:17 697/** * @Filename: ${file_na ... -
rapid-framework 连接 oracle时的一个bug
2009-04-28 17:40 2181在连接oracle数据库时报错: Exception ... -
xapool的框架配置
2008-12-17 10:31 2728package juan.orm.datasource.imp ... -
NIO socket服务器注意的几点.
2008-12-06 17:36 4357当你看到这篇文 ... -
jsp分页
2004-06-23 04:26 890******************************* ... -
解决jsp中乱码问题
2004-06-23 04:28 732数据库存储最好用8859_1的格式,所以存入数据库的时候进行一 ... -
使用类文件的数据库连接方法
2004-06-23 04:34 630******************************* ... -
jsp中文显示问题
2004-06-23 04:40 54510:30 2003-11-29 InberGong整理&l ... -
不用数据源直接连sqlserver数据库(jsp,中文)
2004-06-23 04:43 852//////////////整理InberGong10:22 ... -
WINDOWS 2000 环境下JAVA环境配置
2004-06-23 04:44 946//////////////整理InberGong10:22 ... -
Java 学习方法浅谈(http://www.javaeye.com站长Robbin著)
2004-07-01 02:51 678Java本身是一种设计的非 ... -
解决java中文问题的一些资源
2004-07-01 02:54 756解决java中文问题的一些资源 我收集了一些这方面的文章, 希 ... -
JAVA程序桥联数据库
2004-07-02 12:11 804/****************************** ...
相关推荐
由于提供的文件内容中并没有实际的关于"Enterprise JavaBeans 3.0"的具体知识点,而只是提到了一本书的标题、描述和标签,并且重复了大量访问网站的信息。为了满足您的要求,我将从标题和描述中提到的《Enterprise ...
本书主要介绍EJB3.0标准,是获奖权威参考书Enterprise JavaBeans的最新第5版。全书内容主要分为两大部分,第一部分是EJB 3.0的标准技术手册,主要介绍EJB概念、EJB工作原理及使用方法;第二部分是JBoss实践指南,...
Applying Enterprise JavaBeans Second Edition
### Enterprise JavaBeans 3.0概述 #### 一、企业级应用开发背景 在现代企业级应用开发领域,Java技术一直扮演着至关重要的角色。随着业务需求的不断增长和技术的快速发展,开发人员需要构建出更加灵活、高效且可...
Mastering Enterprise JavaBeans Chinese Version.
Enterprise JavaBeans(EJB)是Java平台上用于构建可扩展、安全和事务处理的企业级应用程序的框架。EJB 3.0是该技术的一个重大更新,它引入了许多改进,旨在简化开发过程并提高开发者效率。本文档集合是EJB 3.0规范...
### 《Mastering Enterprise JavaBeans 第三版》关键知识点概览 #### 一、书籍基本信息 - **书名**:《Mastering Enterprise JavaBeans》第三版 - **作者**:Ed Roman, Gerald Brose, Rima Patel Sriganesh - **...
《Enterprise JavaBeans 4th Edition》是一本专为深入理解J2EE(Java 2 Platform, Enterprise Edition)和Web服务的开发者所准备的经典教程。在Java企业级开发领域,Enterprise JavaBeans(EJB)是核心组件之一,它...
《Reilly.Enterprise.JavaBeans.3.1.6th.Edition.2010》是针对JEE6(Java Enterprise Edition 6)平台的一本权威指南,特别关注于Enterprise JavaBeans(EJB)3.1版本。这本书由Oracle Corporation认证,为希望获得...
Enterprise JavaBeans(EJB)是Java平台企业版(Java EE)的核心组成部分,用于构建可扩展、安全且事务处理能力强的服务器端应用程序。 在EJB 2.0版本中,主要包含了三种类型的组件:会话bean(Session Beans)、...
Enterprise JavaBeans™ is the core component technology of the Java Enterprise Edition platform. It is an enterprise infrastructure designed to provide developers with the automatic management of many...
### Enterprise JavaBeans™ 3.1 技术详解 #### 概览 Enterprise JavaBeans (EJB) 3.1 是一项重要的企业级应用开发技术规范,它在 EJB 3.0 的基础上进一步简化了应用程序的开发流程,并引入了一系列的新特性来提高...
- **EJB (Enterprise JavaBeans)**:是一种服务器端组件模型,主要用于构建企业级应用程序,提供了事务管理、安全性、持久性等功能支持。 ##### 2. **EJB容器的作用** - **容器管理**:EJB容器负责管理EJB组件的...
《精通企业JavaBeans》这本书是Java开发领域的一部经典之作,尤其对于想要深入理解Java企业级应用开发的读者来说,它提供了丰富的知识和实践经验。Java教程这个标签表明本书旨在教授和指导Java编程,特别是与企业级...
《精通企业JavaBeans 3.0》一书深入探讨了JavaBeans规范的最新版本,即3.0版,这是Java企业级开发中的一个重要里程碑。JavaBeans是Java平台的一部分,主要用于构建可重用的组件,这些组件可以被集成到各种应用程序中...
Special Edition Using Enterprise JavaBeans™ 2.0
Java中Enterprise JavaBeans(EJB)编程实例代码,内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构...
jboss 3.2 workbook for enterprise javabeans 3rd edition