快速业务通道

使用Spring,JSF,EJB3设计企业应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
uct     */    public void add(Product product); } 远程接口: package org.zhouxing.simple; /** 远程接口 @author 周行 */ public interface ProductDAORemote extends ProductDAOLocal { } 无状态会话 BEAN package org.zhouxing.simple; import java.util.List; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; /** 无状态会话 BEAN * @author 周行 */ @Stateless @Remote(ProductDAORemote.class) @Local(ProductDAOLocal.class) public class ProductDAOBean implements ProductDAORemote,    ProductDAOLocal {    /**    注入 EntityManager    */    @PersistenceContext(unitName = "simpleJPA")    protected EntityManager em;    /**    Default constructor.    */    public ProductDAOBean() {    }    @Override    public void add(Product product) {      em.persist(product);    }    @SuppressWarnings("unchecked")    @Override    public List<Product> findAll() {      Query query = em.createQuery("select o from  Product o");      return query.getResultList();    } }

使用Spring,JSF,EJB3设计企业应用程序(9)

时间:2011-05-25 IBM 周行

@Stateless 注释指明这是一个无状态会话 Bean,@Remote 注释指定这个无状 态 Bean 的 remote 接口。 Bean 类可以具有多个 remote 接口,每个接口之间 用逗号分隔,如:@Remote ({ProductDAORemote.class,ProductDAORemote2.class,ProductDAORemote3.clas s}) 。如果您只有一个接口,您可以省略大括号,对于本文而言,可以写成这样 :@Remote (ProductDAORemote.class) 。 @Local 注释指定这个无状态 Bean 的 local 接口,和 @Remote 注释一样,@Local 注释也可以定义多个本地接口。

当 @Local 和 @Remote 注释都不存在时,容器会将 Bean class 实现的接口 默认为 Local 接口。如果 EJB 与客户端部署在同一个应用服务器,采用 Local 接口访问 EJB 优于 Remote 接口。因为通过 Remote 接口访问 EJB 需要在 TCP/IP 协议基础上转换和解释 Corba IIOP 协议消息,在调用 EJB 的这一过程 中存在对象序列化、协议解释、TCP/IP 通信等开销。而通过 Local 接口访问 EJB 是在内存中与 Bean 彼此交互的,没有了分布式对象协议的开销,大大提高 了性能。

@PersistenceContext 注释动态注入 EntityManager 对象。在 EJB 的 JNDI ENC 中注册一个指向该资源的引用。 EntityManager 是由 EJB 容器自动管理和 配置的,这包括 EntityManager 的创

建及清理工作。所以我们不需要调用它的 close() 方法释放资源, 如果您试 图这样做, 反而会得到 IllegalStateException 例外。借助 EntityManager, 我们可以创建、更新、删除及查询实体 bean 。 EntityManager 负责将固定数量 的一组类映射到数据库中,这组类被称作持久化单元 (persistence unit) 。 persistence unit 是在 persistence.xml 中定义的。根据持久化规范的要求, 该部署描述文件是必须提供的,如果不提供这一文件,则持久化单元也将不存在 ,因此应用也不能够获得和使用 EntityManager 。本文的持久化单元为 simpleJPA 。

至此 EJB Project 开发完毕,接下来是 WEB Project 。

开发 WEB Project

WEB Project 是本文的重点,在这小节中我们将用 JSF 通过 Spring 来调用

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号