每个bean可能会有很多方法,一般我们通过一个delegate来调用sessionbean中的方法,而非直接调用sessionbean,delegate中只是简单的对每个相对应的sessionbean的public方法的简单封装,在调用的时候省去了每次对home的查找与ejb对象的create,但是可能我们的bean会有很多方法,如果每个bean都写这样一个delegate,这样工作量就会很大,而且也不便于以后系统的移植,比如说,原来使用ejb实现,现在要改用jdo直接操作数据库,而通过运用java的reflect技术,就能较好地实现这些要求.首先,定义了一个facadedelegate的抽象类,用来实现对sessionbean的home的查找,代码如下:
【程序编程相关:卡拉OK功能】 【推荐阅读:调频无线技术】import javax.ejb.*; 【扩展信息:杜比耳机】 import testejb.util.common.*; import testejb.util.resource.*; public abstract class facadedelegate{private static string type = resource.remotetype; public facadedelegate() { } public ejbhome gethome(string jindiname,class classname) { ejbhome home = null; serverlocatoradapter adapter = serverlocatoradapter.getinstance(); try { home = (ejbhome)adapter.gethome(type, jindiname, classname); } catch(exception e) { system.err.println(e.getmessage() + jindiname + classname.tostring()); } return home; }} 其中serverlocatoradapter是一个用来根据是local还是remote调用ejb对象而通过不同的方法查找home的类,如果type为local则调用localserverlocate中的方法,如果type为remote则调用remoteserverlocate中的方法,获得home.代码如下: import java.util.*; import java.lang.reflect.*; ... 下一页