亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

運用反射實現ejb動態委派(1)

2019-11-18 13:36:48
字體:
來源:轉載
供稿:網友

每個bean可能會有很多方法,一般我們通過一個delegate來調用sessionbean中的方法,而非直接調用sessionbean,delegate中只是簡單的對每個相對應的sessionbean的public方法的簡單封裝,在調用的時候省去了每次對home的查找和ejb對象的create,但是可能我們的bean會有很多方法,假如每個bean都寫這樣一個delegate,這樣工作量就會很大,而且也不便于以后系統的移植,比如說,原來使用ejb實現,現在要改用jdo直接操作數據庫,而通過運用java的reflect技術,就能較好地實現這些要求。首先,定義了一個FacadeDelegate的抽象類,用來實現對sessionbean的home的查找,代碼如下:

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.*;

import testejb.util.resource.*;

public class ServerLocatorAdapter {private Map cache;//用來緩存home

private static ServerLocatorAdapter me;

public static ServerLocatorAdapter getInstance()

{if(me == null)

me = new ServerLocatorAdapter();

return me;

}

//取得home

public Object getHome(String type,String jndiHomeName,Class className) throws Exception

{Object home = null;

if(cache.containsKey(jndiHomeName))

return cache.get(jndiHomeName);

if(Resource.LocalType.equals(type))

{

home = getLocalHome(jndiHomeName,className);

cache.put(jndiHomeName,home);

return home;

}

if(Resource.RemoteType.equals(type))

{

home = getRemoteHome(jndiHomeName,className);

cache.put(jndiHomeName,home);

return home;

}

return home;}

//取得local home

private Object getLocalHome(String jndiHomeName,Class className) throws Exception

{

Class myClass = Class.forName(Resource.LocalClass);

// Resource. LocalClass =”testejb.util.common. LocalServerLocator

Method method = myClass.getMethod(Resource.LocalConstractMethod,null);

// Resource. LocalConstractMethod =” getInstance”

LocalServerLocator local = null;

local = (LocalServerLocator)method.invoke(myClass,null);

return local.getLocalHome(jndiHomeName,className);

}

//取得remote home

private Object getRemoteHome(String jndiHomeName,Class className) throws Exception

{

Class myClass = Class.forName(Resource.RemoteClass);

// Resource.RemoteClass =”testejb.util.common.RemoteServerLocator”

Method method = myClass.getMethod(Resource.RemoteConstractMethod,null);

// Resource.RemoteConstractMethod=” getInstance”

RemoteServerLocator remote = null;

remote = (RemoteServerLocator)method.invoke(myClass,null);

return remote.getHome(jndiHomeName,className);

}

private ServerLocatorAdapter() {

// 為cache提供線程安全的保證

cache = Collections.synchronizedMap(new HashMap());

}}

其中Resource為資源類,其中通過對配置文件的讀取,取得一些指定的配置信息。

RemoteServerLocator和LocalServerLocator是兩個根據不同的調用方式取得home借口的具體實現類,代碼如下:

LocalServerLocator:

import javax.naming.*;

import javax.rmi.PortableRemoteObject;

import java.util.*;

import javax.ejb.*;

public class LocalServerLocator {

private Context ic;

private Map cache;//緩存home

private static LocalServerLocator me;

public static LocalServerLocator getInstance()

{if(me == null)

{try

{me = new LocalServerLocator();

}

catch(Exception e)

{System.err.println(e.getCause());

System.err.println(e.getMessage());

}}

return me;

}

public EJBLocalHome getLocalHome(String jndiHomeName, Class className) throws Exception {

EJBLocalHome home = null;

try {if (cache.containsKey(jndiHomeName)) {

home = (EJBLocalHome) cache.get(jndiHomeName);

} else {

Object objref = ic.lookup(jndiHomeName);

home = (EJBLocalHome) objref;

cache.put(jndiHomeName, home);

}

} catch (NamingException ne) {

System.err.println(jndiHomeName);

throw ne;

} catch (Exception e) {

throw e;

}

return home;

}

private LocalServerLocator() throws Exception{

try

{

ic = new InitialContext();

// 為cache提供線程安全的保證

cache = Collections.synchronizedMap(new HashMap());

}

catch(NamingException ne)

{

throw ne;

}

catch(Exception e)

{

throw e;

}

}}



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久www成人免费精品张筱雨| 久久精品免费播放| 777777777亚洲妇女| 一区二区三区国产视频| 国产亚洲xxx| 亚洲人av在线影院| 色噜噜亚洲精品中文字幕| 欧美在线观看网站| 亚洲欧美另类国产| 国产成人久久精品| 国产精品18久久久久久首页狼| 91久久久国产精品| 国产福利精品在线| 亚洲第一精品电影| 精品国产网站地址| 97国产精品免费视频| 日韩免费视频在线观看| 欧美国产精品日韩| 亚洲成人aaa| 色爱av美腿丝袜综合粉嫩av| 亚洲国产精品va在线观看黑人| 亚洲精品电影网在线观看| 久久精品久久久久| 国产一区二区在线播放| 中文在线资源观看视频网站免费不卡| 中文字幕一精品亚洲无线一区| 久久夜色精品亚洲噜噜国产mv| 国产精品一区二区电影| 国产精品日韩精品| 最近2019年日本中文免费字幕| www.久久久久久.com| 日韩成人av在线| 欧美午夜女人视频在线| 国产丝袜一区二区三区免费视频| 日韩成人性视频| 一本色道久久综合亚洲精品小说| 中文字幕日韩在线播放| 精品国产老师黑色丝袜高跟鞋| 97视频在线播放| 欧美成人四级hd版| 亚洲全黄一级网站| 成人欧美在线观看| 欧美成人午夜影院| 国产91精品高潮白浆喷水| 91麻豆桃色免费看| 亚洲国产婷婷香蕉久久久久久| 免费不卡在线观看av| 国产成人免费av| 精品久久久久国产| 91国内揄拍国内精品对白| 91久久精品国产91性色| 国产亚洲欧美一区| 国产成人精品在线观看| 久久久久久国产免费| 性色av一区二区咪爱| 日日噜噜噜夜夜爽亚洲精品| 欧美激情网站在线观看| 亚洲福利在线视频| 色爱av美腿丝袜综合粉嫩av| 欧美日韩一区二区免费视频| 国产在线拍揄自揄视频不卡99| 欧美在线国产精品| 欧美高清videos高潮hd| 中文字幕日韩精品在线观看| 一区二区三区四区在线观看视频| 亚洲国产精品va| 精品日韩美女的视频高清| 国产欧美婷婷中文| 欧美激情视频网| 欧美怡春院一区二区三区| 97久久精品人搡人人玩| 国产精品久久久精品| 欧美大片在线看免费观看| 日韩电影免费观看在线| 欧美日韩亚洲成人| 日韩成人中文电影| 亚洲一区免费网站| 久久久在线免费观看| 国产成人+综合亚洲+天堂| 国产视频福利一区| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲色图第三页| 九九精品在线视频| 久久久久久久久久久亚洲| 日韩在线激情视频| 奇米4444一区二区三区| 中文日韩在线观看| 亚洲最大中文字幕| 亚洲xxxxx电影| 亚洲tv在线观看| 精品国产91乱高清在线观看| 91久热免费在线视频| 91精品国产乱码久久久久久久久| 欧美精品一区二区免费| 久久色精品视频| 色综合久久88色综合天天看泰| 久久精品视频中文字幕| 最近中文字幕mv在线一区二区三区四区| 久热精品视频在线免费观看| 国产精品网址在线| 国产欧美日韩精品丝袜高跟鞋| 午夜免费在线观看精品视频| www.美女亚洲精品| 国产成人亚洲精品| 国产精品免费一区豆花| 国产精品亚洲第一区| 成人网欧美在线视频| 欧美成人全部免费| 亚洲黄色成人网| 欧美与黑人午夜性猛交久久久| 国产v综合v亚洲欧美久久| 久久99精品久久久久久琪琪| 俺也去精品视频在线观看| 日韩女优在线播放| 亚洲一区二区久久久久久| 色综久久综合桃花网| 亚洲色图欧美制服丝袜另类第一页| 国产91在线播放精品91| 日本精品一区二区三区在线| 欧美老女人在线视频| 国产精品女主播视频| 久久人人爽人人爽人人片av高请| 欧美日韩国产激情| 国产在线观看精品一区二区三区| 亚洲精品自拍视频| 78色国产精品| 国模精品系列视频| 亚洲国产三级网| www日韩欧美| 欧美一级大片视频| 亚洲美女免费精品视频在线观看| 久久人人爽人人爽人人片av高请| 久久福利网址导航| 日韩大片免费观看视频播放| 久久99青青精品免费观看| 日韩欧美精品网址| 国产精品视频地址| 午夜精品久久久久久久99黑人| 亚洲电影在线看| 国产精品私拍pans大尺度在线| 中文国产成人精品久久一| 国产精品无av码在线观看| 成人动漫网站在线观看| 91亚洲精品一区二区| 亚洲一区二区黄| 国产91免费观看| 久久99亚洲精品| 日韩在线观看网站| 亚洲一区免费网站| 欧美成人激情视频免费观看| 国产亚洲人成网站在线观看| 51精品国产黑色丝袜高跟鞋| 性色av一区二区三区免费| 欧美激情第6页| 最近2019年日本中文免费字幕| 精品久久久久久国产| 国内揄拍国内精品少妇国语| 91成品人片a无限观看| 欧美激情一级精品国产| 国产日韩欧美日韩| 97久久伊人激情网| 欧美在线视频导航| 97超碰色婷婷| 55夜色66夜色国产精品视频|