文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

学习EJB CMP/CMR 的心得体会 (转)

2023-06-03 02:46

关注
学习EJB CMP/CMR 的心得体会 (转)[@more@]

  本人学习EJB也有一年多的时间了,前段时间公司接到一个大的项目才真正的用到,客户使用的webLOGIC 7.0,数据库用的是sql SERVER 2000,所以我只能正对Weblogic+SQL SERVER 2000的环境来做说明。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  首先,在Weglogic中配置数据源,在Weblogic中有Sql Server 2000的JdbC,所以就可以直接使用,注意,在EJB中一定要使用Tx-Datasource,另外,还要对Sql Server 2000数据库打一个JTA的补丁,这样才能更好的支持分布式事务的处理。

  下面,我就对我们系统中的一个认证子系统做一个简单的介绍,(参考:http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/Java-onlinecourse-bytitle/991A4E2DCA2D6CE148256BCE00135FAE?OpenDocument)我基本上是根据这个例子来做的。

  在本子系统中,LocalUserBean(实体)用来验证用户身份,UserInfoBean(实体)用户详细信息,UserGroupBean(实体)用户分组,LocalRoleBean(实体)用户角色,UserManageBean(会话)该子系统的唯一远程接口。

  关系:LocalUserBean ----- UserInfoBean 是 one2one的单相关系,UserGroupBean----LocalUserBean是one2many的双相关系,LocalUserBean----LocalRoleBean是many2many的双相关系。

  LocalUserBean----UserInfoBean:一对一的关系比较简单

  LocalUserBean的字段 (CMP)

  public abstract void setEMail(java.lang.String email);

  public abstract void setPw(java.lang.String pw);

  public abstract java.lang.String getEmail();

  public abstract java.lang.String getPw();

  与UserInfo建立关系 (CMR)

  public abstract void setUserInfo(usermanagesample.UserInfo userInfo);

  public abstractUserInfo getUserInfo();

UserInfoBean的字段 (CMP)

  public abstract void setEmail(java.lang.String email);

  public abstract void setDept(java.lang.String dept);

  public abstract void setName(java.lang.String Name);

  ……

  public abstract java.lang.String getEmail();

  public abstract java.lang.String getDept();

  public abstract java.lang.String getName();

  ……

 由于关系是单的,所以UserInfoBean没有CMR字段。

 Weblogic-cmp-rdbms-jar.xml

 

  LocalUser

  WL-TX-SqlServer-DataSource

 

 

localuser

 

  email

  EMAIL

 

 

  pw

  PW

 

 

 

UserInfo  WL-TX-SqlServer-DataSource

 

 

userinfo

 

  email

  EMAIL

 

 

  dept

  DEPT

 

 

  name

  uname

 

 

 

 

  userInfo-localUser

 

  LocalUserRelationshipRole

 

  localuser

  userinfo

 

  EMAIL

  EMAIL

   

 

 

LocalUserBean中的方法:

ejbCreate(String email,String pw,UserInfoValueobject user){

  setEmail(email);

  setPw(pw)

}

ejbPostCreate(String email,String pw,UserInfoValueObject user){

  Context ctx=new InitialContext();

LocalRoleHome home=(LocalRoleHome)ctx.lookup(“LocalRole”);

home.create(user.getEmail,…………);

}

通过ejbPostCreate的方法,调用LocalRoleBean的本地接口,同时创建用户信息,UserInfoValueObject为自己定义的一个用户信息类,记住,这个类一定要实现java.io. Serializable,因为EJB中要求对象都可以序列化。

UserManage中的方法

添家用户。添加LocalUser的同时,也添加了UserInfo

  public void addUser(String email, String pw, UserInfoValueObject user) {

  try{

  LocalUser user=userHome.create(email, pw,user);

  }catch(CreateException ce){

  throw new EJBException("创建用户"+email+"错误!",ce);

}

}

删除用户。删除LocalUser的同时,也删除了UserInfo

public void removeUser(String email){

try{

  userHome.remove(email);

      }catch(CreateException ce){

  throw new EJBException("删除用户"+email+"错误!",ce);

}

  }

校验用户密码

public boolean verifyUser(String email, String pw) {

  try{

  LocalUser user = userHome.findByPrimaryKey(email);

  return user.getPw().equals(pw);

  }catch(FinderException fe){

  throw new EJBException("校验用户"+email+"错误!",fe);

  }

  }

LocalUser----LocalRole的关系为many2many的双相关系。

    在开始编写EJB CMP的时候,由于我对many2many的关系映射总是失败,所以在项目当中我都避免出现many2many的关系,后来发现EJB中的关系其实就是实现了数据库中的关系,所以对数据库的基础要了解的话,实现起来也不复杂。

LocalRoleBean: (CMP)

  public abstract void setRolename(java.lang.String rolename);

  public abstract void setDescription(java.lang.String description);

  public abstract java.lang.String getRolename();

  public abstract java.lang.String getDescription();

(CMR)

  public abstract java.util.Collection getLocalUser();

  public abstract void setLocalUser(java.util.Collection localUser);

在LocalUserBean中加,因为是many2many的关系,所以是Collection接口;

  public abstract void setRoletab(java.util.Collection roletab);

  public abstract java.util.Collection getRoletab();

Weblogic-cmp-rdbms-jar.xml

 

  Roletab

  WL-TX-SqlServer-DataSource

 

 

roletab

 

  rolename

  ROLENAME

 

 

  description

  DESCRIPTION

 

 

 

  localUser-roletab

 

middletab

 

  LocalUserRelationshipRole

 

  middletab

  localuser

 

  localuserid

   EMAIL

 

 

 

 

  RoletabRelationshipRole

 

  middletab

  roletab

 

  roleid

  ROLENAME

 

 

 

 

UserManage中实现的方法(略);

UserGroup----LocalUser是one2many的双相关系;

  (CMP)

  public abstract void setName(java.lang.String name);

  public abstract void setDescription(java.lang.String description);

  public abstract java.lang.String getName();

  public abstract java.lang.String getDescription();

  (CMR)

  public abstract java.util.Collection getLocalUser();

  public abstract void setLocalUser(java.util.Collection localUser);

Weblogic-cmp-rdbms-jar.xml

 

  LocalGroup

  WL-TX-SqlServer-DataSource

 

 

localgroup

 

  name

  name

 

 

  description

  description

 

 

 

  localUser-localGroup

 

  LocalUserRelationshipRole

 

  localuser

  localgroup

 

  LOCAL_GROUP

  name

 

 

 

 

总结:首先要对EJB CMP/CMR的实现原理充分了解,其次要了解数据库原理中关系是如何定义的,这样对于你实现关系的映射非常有好处,第三,就是要看别人的代码和例子,多看相关的介绍文章,多做例子。

由于本人的知识和水平有限,还请大家不吝指教和批评。

我的联系方式:hotmail.com">zceast@hotmail.com(msn)

希望能和大家共同探讨和学习


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧