快速业务通道

提升EJB性能的12招 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
RemoteException; public void setLastName(String lastName) throws RemoteException; public int getPersonId() throws RemoteException; public void setPersonId(int personId) throws RemoteException; }

代码段2. 一个更好的方法

这里我们对代码段1所展示的接口进行改进。只不过这些接口方法一次可以传递更多的数据。

public interface Person extends EJBObject { public PersonData getPersonData() throws RemoteException; public void setPersonData( PersonData personData) throws RemoteException; } /* 这是一个value对象. value对象可以取得 细线优化的方法*/ public class PersonData implements Serializable { PersonData(String firstName, String lastName, int personId) { this. firstName = firstName; this. lastName = lastName; this. personId = personId; } public String getFirstName() { return firstName ; } public String getLastName() { return lastName; } public int getPersonId(){ return personId; } private String firstName; private String lastName; private int personId; }

代码段3. 建立一个Facade。

提升EJB性能的12招(4)

时间:2010-12-18

服务器端的facade为多个对象提供统一的接口。在这个例子中,ServerFacade为程序要用到的所有EJB的home handle提供缓存。

/* ServerFacade 为服务端的EJB 提供一个统一的接口。 所有客户端的类都通过ServerFacade访问服务器 */ public class ServerFacadeBean implements SessionBean { file://缓存所有需要的EJB的home handle. /* Person EJB 的home handle*/ PersonHome personHome = null; /* Bank EJB的home handle*/ BankHome bankHome = null; ... public ServerFacadeBean() { initialize(); } public void initialize() { try { /* 初始化所有的Home handle. We could also do lazy initialization i.e., initialize as And when a home handle is needed. /* get initial context */ Context ctx = ... if ( personHome == null ) personHome = (PersonHome) ctx.lookup(“PersonHome”); if ( bankHome == null ) bankHome = ( BankHome) ctx.lookup(“BankHome”); } catch(Exception e) { /* 异常:查找失败*/ } } public PersonData getPersonData(int personId) throws RemoteException { /*使用personHome缓存的副本*/ try { Person person = personHome.findByPrimaryKey(personId); return person.getPersonData(); } catch(Exception e) { /*异常处理*/ } } public BankData getBankData(int bankId) throws RemoteException { /* 使用bankHome handle 缓存的副本*/ try { Bank bank = bankHome.findByPrimaryKey(bankId); return bank.getBankData(); } catch(Exception e) { /*异常处理*/ } } ... }

代码段4.一个调用

提升EJB性能的12招(5)

时间:2010-12-18

为了避免一次远程调用返回数据库的一行,可以用会话EJB对象将所有的数据打包成单个调用。

public class ServerFacadeBean implements SessionBean { ... >// 将行向量返回给客户端 public Vector findPersonsWithFirstName( String firstName) throws RemoteException { Vector vector = new Vector(); Enumeration enumeration = null; try { enumeration = personHome.findPersonsWithFirstName ( firstName); PersonData personData = null; if ( enumeration != null ) { while ( enumeration.hasMoreElements() ) { Person person = (Person)enumeration.nextElement(); personData = perso

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号