EJB学习一

          最近在看EJB,概述一下基本的概念:
          EJB是用来创建分布式、服务器端基于java的企业应用组件的模型,是java服务器端服务框架的规范,其最大的用处是部署分布式应用程序。
          在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。 
           一 .Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。
         Stateful Session Bean:每次产生一个新的会话,能区分不同的会话。
         Stateless Session Bean : 服务器端是同一个对象,为单例。
         本地(Local):客户端与其调用的EJB对象在同一个JVM进程中,数据直接用传址的方式传输。
         远程(Remote):客户端与其调用的EJB对象不在同一个JVM进程中,传值,需要将参数序列化。
         Webservice :Webservice 客户端可以访问无状态会话bean的接口
   二.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。
   三.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
         JMS Java 的消息服务, JMS 的客户端之间可以通过 JMS 服务进行异步的消息传输。 JMS 支持两种消息模型: Point-to-Point P2P )和 Publish/Subscribe Pub/Sub ),即点对点和发布订阅模型。
        
点对点:在 P2P 模型中,有下列概念:消息队列 (Queue) 、发送者 (Sender) 、接收者 (Receiver) 。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。
l       每个消息只有一个消费者 (Consumer) (即一旦被消费,消息就不再在消息队列中)
l       发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。
l       接收者在成功接收消息之后需向队列应答成功
如果你希望发送的每个消息都应该被成功处理的话,那么你需要 P2P 模型。
          发布订阅: Pub/Sub 模型中,有下列概念: 主题( Topic )、发布者( Publisher )、订阅者( Subscriber )。客户端将消息发送到主题。多个发布者将消息发送到 Topic ,系统将这些消息传递给多个订阅者。
l       每个消息可以有多个消费者
l       发布者和订阅者之间有时间上的依赖性。针对某个主题 (Topic) 的订阅者,它必须创建一个订阅之后,才能消费发布者的消息,而且,为了消费消息,订阅者必须保持运行的状态。
当然,为了缓和这种严格的时间相关性, JMS 允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
       如果你希望发送的消息可以不被做任何处理、或者被一个消费者处理、或者可以被多个消费者处理的话,那么可以采用 Pub/Sub 模型。
          消息的消费:在 JMS 中,消息的产生和消费是异步的。对于消费来说, JMS 的消费者可以通过两种方式来消费消息。
l       同步 �C 订阅者或接收者调用 receive 方法来接收消息, receive 方法在能够接收到消息之前(或超时之前)将一直阻塞。
l       异步 �C 订阅者或接收者可以注册为一个消息监听器。当消息到达之后,系统自动调用监听器的 onMessage 方法。
    对客户端来说, message-driven bean 就是异步消息的消费者。当消息到达之后,由容器负责调用 MDB 。客户端发送消息到 destination MDB 作为一个 MessageListener 接收消息。

 

你可能感兴趣的:(职场,休闲)