热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->jsp 
站内搜索:
前进:从EJB 2.1到EJB 3.0(2)
作者:谢启东 来源:天极开发 整理日期:2006-7-2

  迁移EJB会话bean客户端

  一个EJB 2.1会话bean的客户端通过使用JNDI名可取得一个会话bean对象,如下所示的客户端使用了BookCatalogLocalHome的JNDI名取得一个本地主对象,接着调用了create()方法,随后,客户端用getEdition(String)业务方法输出特定标题的版本值。

import javax.naming.InitialContext;
public class BookCatalogClient
{
 public static void main(String[] argv)
 {
  try{
   InitialContext ctx=new InitialContext();
   Object objref=ctx.lookup("BookCatalogLocalHome");
   BookCatalogLocalHome catalogLocalHome = (BookCatalogLocalHome)objref;
   BookCatalogLocal catalogLocal = (BookCatalogLocal) catalogLocalHome.
   create();
   String title="Java and XML";
   String edition = catalogLocal.getEdition(title);
   System.out.println("标题的版本:" + title + " " + edition);
  }
  catch(Exception e){}
 }
}

  在EJB 3.0中,可通过依赖性注入,来获取一个对会话bean对象的引用,这通常由@Inject、@Resource、@EJB注释来实现。如下所示的EJB 3.0会话bean客户端使用了@Inject注释注入到BookCatalogBean类中,仍可由getEdition(String)业务方法来获取标题的版本值。

public class BookCatalogClient
{
 @Inject BookCatalogBean;
 BookCatalogBean catalogBean;

 String title="Java and XML";
 String edition=catalogBean.getEdition(edition);
 System.out.println("标题版本:" + title + " " + edition);
}

  迁移实体bean

  本节讲述如何迁移EJB 2.1的实体bean到EJB 3.0。一个EJB 2.1实体bean实现了EntityBean接口,其由getter和setter CMP字段方法、getter和setter CMR字段方法、回调方法及ejbCreate/ejbPostCreate方法组成。示例实体bean(见例1)--BookCatalogBean.java,由CMP字段标题、作者、发行者和CMR字段版本组成。

  例1:BookCatalogBean.java

import javax.ejb.EntityBean;
import javax.ejb.EntityContext;

public class BookCatalogBean implements EntityBean
{
 private EntityContext ctx;
 public abstract void setTitle();
 public abstract String getTitle();
 public abstract void setAuthor();
 public abstract String getAuthor();
 public abstract void setPublisher();
 public abstract String getPublisher();
 public abstract void setEditions(java.util.Collection editions);
 public abstract java.util.Collection getEditions();

 public String ejbCreate(String title)
 {
  setTitle(title);
  return null;
 }

 public void ejbRemove() {}
 public void ejbActivate() {}
 public void ejbPassivate() {}
 public void ejbLoad() {}
 public void ejbStore() {}

 public void setEntityContext(EntityContext ctx)
 {
  this.ctx=ctx;
 }

 public void unsetEntityContext()
 {
  ctx = null;
 }
}

  而这个EJB 2.1实体bean的ejb-jar.xml部署描述符(见例2)文件,指定了EJB类、接口、CMP字段、EJB QL查询和CMR关系。BookCatalogBean实体Bean定义了一个查找方法findByTitle()、一个CMR字段及版本。

[1]  [2]  [3]  [4]  
相关文章