快速业务通道

在J2EE中实现Observer模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
范的要求 ,所有商务方法都要抛出java.rmi.RemoteException,所以单纯的从java类库提供的Observer 接口继承是不行的。具体的细节可以参见ejb observer pattern文档(参考 EJBObserverPattern)。

注意:文档中的附带程序在JB5.0+BAS4.5中会出现corba marshal的问题,如果你只是为 了实现一个subject对应多个observer,而且是subject将所有的数据推给observer的话,可 以将EJBObserver接口中的update(EJBObservable observable,Object args)改为update (EJBObservable observable,Object args),这样可以使程序在JB5.0+BAS4.5集成运行环 境中通过。

使用JMS在J2EE中实现Observer模式

消息系统允许分开的未耦合的应用程序之间可靠地异步通信。它使消息产生者和使用者之 间的关系是一种"松耦合"的关系。对于使用者,它不在乎谁产生了消息,产生者是否仍在网 络上以及消息是什么时候产生的。这就允许建立动态的,可靠的和灵活的系统。整个的子系 统能被修改而不会影响系统的其他部分。其实,领域层和表示层的分离的目的也就在于此。

在J2EE中实现Observer模式(4)

时间:2011-04-13 IBM 唐咸峰

在消息系统中,通常有两种消息类型:1)发布/订阅(publish/subscribe)。发布/订阅 消息系统支持一个事件驱动模型,消息产生者和使用者都参与消息的传递。产生者发布事件 ,而使用者订阅感兴趣的事件,并使用事件。产生者将消息和一个特定的主题(Topic)连在一 起,消息系统根据使用者注册的兴趣,将消息传给使用者。2)点对点(Peer to peer)。在 点对点的消息系统中,消息分发给一个单独的使用者。它维持一个"进入"消息队列。消息应 用程序发送消息到一个特定的队列,而客户端从一个队列中得到消息。

在消息系统中,我们可以通过JMS和消息驱动Bean(Message-Driven Bean),用来实现应 用程序各个部件之间的异步消息传递。对于Observer模式而言,我们会优先地选用发布/订阅 (publish/subscribe)模型。在编写事件的生产者和事件的消费者代码的时候,我们可以直 接使用JMS API来编写Producer和Consumer,但是如果事件的消费者位于EJB Tier时,最好采 用消息驱动Bean(Message- Driven Bean)。因为消息驱动Bean通常配置成是一个特别的主 题(topic)或队列的客户端,作为消息的使用者。它大大地简化了创建一个JMS使用者,创 建和配置一个JMS消息使用者这些功能都交由EJB容器来做了。开发人员只需简单地实现消息 驱动Bean的接口,配置给EJB服务器,用来创建一个接收消息的商业逻辑部件。另外,当事件 的消费者同时有多个,我们可以使用MDB Facade模式来实现Observer模式。

图四:MDB facade模式

在J2EE中实现Observer模式 - 编程入门网

MDB Facade模式实际上是Session Bean Facade模式的一个变种,因为MDB从本质上来说非 常类似于一个无状态的Session Bean,只不过MDB没有remote接口和home接口。图四的MDB Facade模式也可以和Session Bean Facade模式结合起来使用,即一个MDB作为多个Session Bean的Facade,一个Session Bean作为多个Entity Bean的Facade。从而实现消息的传递。

代码细节可以参照本文的示范代码,它在BEA weblogic中运行通过。

总结

我们使用模式的时候,一定要注意模式的意图(intent),而不要过多的去关注模式的实 现细节,因为这些实现细节在特定情况下,可能会发生一些改变。在Java类库中采用 Java.util.Observable类和Java.util.Observer接口来实现Observer模式,它们在单个的 Java VM.中运行的很好,但如果想在EJB中使用它们就会有一些问题。本文主要讨论了在分布 式、多层的J2EE平台中如何通过EJB Observer Pattern和JMS来实现Observer模式。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号