TravelAgentRemote(远程接口)
来源:优易学  2011-1-18 13:08:39   【优易学:中国教育考试门户网】   资料下载   IT书店
  创建TravelAgent EJB的第一步是定义它的远程接口。该接口规定了允许客户端调用的EJB业务方法。客户端与TravelAgent的createCaben()和findCabin()方法进行交互,以控制Cabin实体。
  package com.titan.travelagent;
  import javax.ejb.Remote;
  import com.titan.domain.Cabin;
  @Remote
  public interface TravelAgentRemote {
  public void createCabin(Cabin cabin);
  public Cabin findCabin(int id);
  }
  TravelAgent EJB的远程接口实在没有什么特别之处。除了被标以@javax.ejb.Remote外,它看起来就像一个普通的Java接口。该注解告诉EJB容器,这一特定接口是TravelAgent EJB的远程业务接口。还要注意的是,业务方法不必再像EJB2.1那样抛出java.rmi.RemoteException了。如果想抛的话依然还可以抛,但是这并非是必须的。
  TravelAgentBean: Bean Class
  TravelAgentBean: The Bean Class
  我们既已定义好针对TravelAgent EJB的远程接口,就要为该session bean实现包含业务逻辑的bean class了。TravelAgent EJB被定义为stateless bean。我们使用@javax.ejb.Stateless
  注解来表达此意图。尽管不是必要的,但对stateless session bean而言,实现其全部业务接口是一条不错的实践,这样,client/bean契约就能够通过Java编译器得到强化。青年人网提示在本例中,业务接口即 TravelAgentRemote。下面是TravelAgentBean的完整定义。
  package com.titan.travelagent;
  import javax.ejb.Stateless;
  import javax.persistence.EntityManager;
  import javax.persistence.PersistenceContext;
  import com.titan.domain.Cabin;
  @Stateless
  public class TravelAgentBean implements TravelAgentRemote{
  @PersistenceContext(unitName="titan") private EntityManager manager;
  public void createCabin(Cabin cabin) {
  manager.persist(cabin);
  }
  public Cabin findCabin(int pKey) {
  return manager.find(Cabin.class, pKey);
  }
  }
  在该实现中,还有若干问题需要进一步阐明。首先,TravelAgentBean类使用了@javax. persistence. PersistenceContext注解来获得对EntityManager服务的访问,以此来创建和查找Cabin实体。注解 @PersistenceContext告知EJB容器,必须用一个EntityManager实例来设置manager数据成员。EJB容器发现数据成员的类型为javax.persistence.
  EntityManager,便知道应该将数据成员设置为一个指向EntitiyManager服务的引用,此服务指向我们在 persistence.xml文件里定义的Titan persistence unit。这一数据成员将在bean实例被创建时初始化。
接下来的两个方法与 EntityManager服务进行交互,用以在数据库中创建Cabin实体,并依据主键对其进行定位。createCabin()方法调用 EntityManager.persist(),并传入一个要进行持久化的实体实例。待该操作完成后,Cabin实例就会被纳入持久化管理机制,并被存储到数据库中。稍后我们将会看到,创建Cabin实例与创建任何其他普通Java对象一样没有什么区别。findCabin()方法将数据库中Cabin 实体的一个主键作为其参数。它调用EntityManager.find()方法,并传入Cabin bean的类型和实际的主键作为参数。Cabin bean的类型参数告知EntityManager,它在数据库中试图查找的是何种实体。随后findCabin()方法将找到的Cabin实体并返回给远程客户端。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训