Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

容器管理持续化示例

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

public void dropPlayer(String playerId, String teamId) { 
try { 
LocalPlayer player = 
playerHome.findByPrimaryKey(playerId); 
LocalTeam team = teamHome.findByPrimaryKey(teamId); 
team.dropPlayer(player); 
} catch (Exception ex) { 
throw new EJBException(ex.getMessage()); 
} 
}

  3、TeamEJB

  dropPlayer方法更新了TeamEJB-PlayerEJB关联关系。首先,方法接受对应于players关联字段的LocalPlayer对象的Collection。然后,它通过调用Collection接口的remove方法以去除目标player。下面是TeamEJB的dropPlayer方法:


public void dropPlayer(LocalPlayer player) { 
  try { 
Collection players = getPlayers(); 
players.remove(player); 
} catch (Exception ex) { 
throw new EJBException(ex.getMessage()); 
} 
}

  从一个运动队中获取一个队员

  1、RosterClient

  客户端可以通过调用RosterEJB这个session bean中的getPlayersOfTeam方法获得运动队中的队员。这个方法返回PlayerDetails对象的ArrayList。一个PlayersDetails对象包含四个变量--playerId、name、position和salary--这是PlayerEJB持续化字段的拷贝。RosterClient调用getPlayersOfTeam方法的代码如下:


playerList = myRoster.getPlayersOfTeam("T2");

  2、RosterEJB

  RosterEJB这个session bean的getPlayersOfTeam方法通过调用findByPrimaryKey方法以定位目标队对应的LocalTeam对象。然后,getPlayersOfTeam方法调用TeamEJB中的getPlayers方法。下面是getPlayersOfTeam方法的源代码:


public ArrayList getPlayersOfTeam(String teamId) { 
Collection players = null; 
try { 
LocalTeam team = teamHome.findByPrimaryKey(teamId); 
players = team.getPlayers(); 
} catch (Exception ex) { 
throw new EJBException(ex.getMessage()); 
} 
return copyPlayersToDetails(players); 
}

  getPlayersOfTeam方法返回PlayerDetails对象的ArrayList,上述的那个对象是由copyPlayersToDetails方法生成的:


private ArrayList copyPlayersToDetails(Collection players) { 
 ArrayList detailsList = new ArrayList(); 
 Iterator i = players.iterator(); 
 while (i.hasNext()) { 
 LocalPlayer player = (LocalPlayer) i.next(); 
 PlayerDetails details = 
 new PlayerDetails(player.getPlayerId(), 
 player.getName(), player.getPosition(), 
 player.getSalary()); 
 detailsList.add(details); 
 } 
 return detailsList; 
} 

  3、TeamEJB

  TeamEJB中的getPlayers方法是针对players这个关联字段的访问方法:


public abstract Collection getPlayers();

  这个方法对于本地客户端是可见的,这是因为它被定义在local接口LocalTeam中:


public Collection getPlayers();

  当被一个本地客户端调用时,一个get访问方法会返加一个关联字段的索引。如果本地客户端改变了由get访问方法返回的对象,在entity bean中的关联字段的值也会随之改变。例如,一个TeamEJB的本地客户端可以这样从一个运动队中去除一个队员:


LocalTeam team = teamHome.findByPrimaryKey(teamId); 
Collection players = team.getPlayers(); 
players.remove(player);

  如果你想要防止一个本地客户端这样修改一个关联字段,你应该更加注意我们在下面所讲的内容。

  获取一个运动队队员的拷贝

  与上面讨论的方法不同,在这一章我们讨论的方法为我们示范了以下技术:

  1、对传输到远程客户端的信息进行过滤

  2、防止本地客户端直接对关联字段进行修改

  1、RosterClient

  如果你不想让远程客户端了解到队员的薪水,你可能需要调用RosterEJB中的getPlayersOfTeamCopy方法,和getPlayersOfTeam方法类似,getPlayersOfTeamCopy方法也返回一个PlayerDetails对象的ArrayList。然而,getPlayersOfTeamCopy返回的对象有所不同--它们的salary变量被统一置为零。RosterClient调用getPlayersOfTeamCopy方法的代码如下:


playerList = myRoster.getPlayersOfTeamCopy("T5");

  2、RosterEJB

  与getPlayersOfTeam方法不同,getPlayersOfTeamCopy方法不调用LocalTeam接口中的getPlayers访问方法。取而代之的是,getPlayersOfTeamCopy方法通过调用LocalTeam接口中的getCopyOfPlayers商业方法以获得队员信息的拷贝。这样做的结果是,getPlayersOfTeamCopy方法不能修改TeamEJB的关联字段players。下面是RosterEJB中getPlayersOfTeamCopy方法的源代码:

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 3 4 5 67 8 9 下一页


上一篇:在GoF模式以外(1)   下一篇:Bean管理持续化实例

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
·Motorola微处理器bootloader分析与应用
·Fedora Core5 NFS服务器搭建过程介绍
·Linux系统:让内存不再泄漏的实用技巧
·新手看招 手把手教你安装VMware虚拟机
·“侵权事件” 红帽称微软企图干扰用户
·删除Linux后 如何找回Windows启动菜单
·菜鸟乐园 Linux中常见文件系统格式介绍
·Linux操作系统下IPTables配置方法详解
·实用技巧 Linux系统的经典使用技巧八则
·Linux系统文件优化及磁盘检查方法介绍
推荐文章
·java类库中的设计模式(1)
·增强Sendmail的抗DoS攻击能力
·gcc中格式化输出函数的研究(2)
·在Ubuntu上建立Arm Linux的开发环境
·如何在Jsp中使用JDBC来联结MySql
·Linux 指令篇:设备管理--setleds
·Bzip2 Howto
·socket 基础知识
精彩文章
·对象/关系映射--关联模式
·Xwpe 1.5.26a
·做一个最小的Linux kernel
·X-window下如何设定Linux的控制台休
·如何监测内存泄漏
·Qmail+LDAP安装配置实例(二)
·IP伪装技术浅谈
·Jini和RMI开发中的codebase问题
·GTK v1.2 Tutorial(英文)
·Linux用户要注意修复漏洞
·[显卡]nvidia显卡的安装大全
·Linux操作系统的经典汉化方案回顾
·KDE 2.1安装及使用介绍
·常见的wireless名词整理
·Apache服务器实现用户验证
·如何重新规划分割区
·如何提高linux命令行的工作效率
·标准建模语言UML及其支持环境(一)
·Linux 指令篇:文件打印--lpr
·Linux组网入门(4):文件服务器
·Linux99问(上)
·[软件安装]软件安装通用思路
·gdb (GNU 调试器):基础
·GAWK 手册(二)
·SNORT FAQ v1.7.5(2)
·正则表达式
Power by linux-cn.com 粤ICP备05006655号