使用Spring,JSF,EJB3设计企业应用程序 - 编程入门网
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |