<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    浪跡天涯
    web報(bào)表設(shè)計(jì)器....
    posts - 61,comments - 71,trackbacks - 0

    第一步:定義服務(wù)的配置文件(指定服務(wù)名和服務(wù)路徑)

    <? xml?version = " 1.0 " ?encoding = " gb2312 " ?>
    <!-- DOCTYPE?service - config?SYSTEM? " service.dtd " -->
    < service - config >
    ????
    <!-- ?用戶服務(wù)? -->
    ????
    < service?name = " UserService " ? class = " com.xainfor.service.UserService " ?template = " normal " ? />
    ????
    < service?name = " GnmkService " ? class = " com.xainfor.service.GnmkService " ?template = " normal " ? />
    </ service - config > ?

    第二步:系統(tǒng)初始化是將所有服務(wù)名和路徑加載到一個(gè)靜態(tài)的HashMap中

    public ? class ?ServiceConfig? {
    ????
    ????
    public ? static ?HashMap?serviceMap? = ? new ?HashMap();
    ????
    ????
    public ? static ?String?getService(String?serviceName)? {
    ????????String?serviceClass?
    = ? "" ;
    ????????serviceClass?
    = ?ServiceConfig.serviceMap.get(serviceName).toString();
    ????????
    return ?serviceClass;
    ????}

    }


    第三步:定義一個(gè)接口類

    public ? interface ?Service? {
    ?
    public ? void ?execute();
    }
    第四步:服務(wù)實(shí)例化類
    public?class?ServiceExecuteHelper?{
    ????
    ????
    /**
    ?????*?日志處理
    ?????
    */

    ????
    private?static?final?MsgLogger?logger?=?MsgLogger.getLogger();
    ????
    ?????
    public?static?void execute(String?servicename)?{
    ?????????
    try?{
    ????????????
    //驗(yàn)證服務(wù)是否存在
    ????????????String?servicClass?=?ServiceConfig.getService(servicename);
    ????????????
    //如果服務(wù)存在就加載服務(wù)信息
    ????????????if?(servicClass?!=?null?&&?!servicClass.equals(""))?{
    ????????????????Class?classObject?
    =?Class.forName(servicClass);
    ????????????????Service?service?
    =?(Service)?classObject.newInstance();
    ????????????????
    service.execute();????????????????????????????
    ????????????}
    ?else?{
    ????????????????logger.info(
    "服務(wù)["+servicename+"]未定義");
    ????????????}

    ????????}
    ?catch(Exception?e)?{
    ????????????logger.info(
    "服務(wù)["+servicename+"]不存在!");
    ????????}

    ?????}

    }
    第五步:定義接具體服務(wù)并實(shí)現(xiàn)接口類
    public?class?GnmkService?implements?Service?{

    ????
    /*?(non-Javadoc)
    ?????*?@see?com.xainfor.service.Service#println()
    ?????
    */

    ????
    public?void execute()?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????System.out.println(
    "執(zhí)行的是GnmkService");
    ????}


    }
    public?class?UserService?implements?Service?{
    ????
    ????
    public?void execute()?{
    ????????
    //?TODO?Auto-generated?method?stub
    ????????System.out.println("執(zhí)行的是UserService");
    ????????
    ????}

    }
    第六步:測(cè)試類
    public?class?testService?{
    ???
    ????
    public?static?void?main(String?[]?temp)?{
    ??????ServiceExecuteHelper.execute("UserService");
    ???}

    }
    posted on 2007-11-19 15:48 JJCEA 閱讀(4200) 評(píng)論(16)  編輯  收藏 所屬分類: java日記

    FeedBack:
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2007-11-20 08:45 | 隔葉黃鶯
    IOC組件像Spring不就是很好的幫助你完成這些事情的嗎  回復(fù)  更多評(píng)論
      
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2007-11-20 09:30 | 我的java生涯
    我是在做一個(gè)統(tǒng)一消息認(rèn)證平臺(tái),不想太多的用第三方的東西.  回復(fù)  更多評(píng)論
      
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2007-11-20 15:22 | feilong
    請(qǐng)問服務(wù)的配置文件是自己解析嗎?  回復(fù)  更多評(píng)論
      
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2007-11-20 16:40 | 隔葉黃鶯
    統(tǒng)一消息認(rèn)證用Ldap,一般應(yīng)用服務(wù)器只需配置就行了,都不需要編碼實(shí)現(xiàn)  回復(fù)  更多評(píng)論
      
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2007-11-20 17:59 | 我的java生涯
    服務(wù)的配置文件是自己解析@feilong
    是自已解析的,代碼如下:
    public class ReadService {

    public String readService(String value) {
    String fileName = "/service.xml";
    String classname = "";
    try {
    ReadXML readXmlBean = new ReadXML();
    String file = java.net.URLDecoder.decode(this.getClass().getResource(fileName).toString(), "UTF-8");
    file = file.substring(file.indexOf(":") + 1, file.length());
    readXmlBean.readXML(file);//讀取指定路徑的XML文件
    Document doc = readXmlBean.getXmlDoc();
    Element root = doc.getRootElement();
    java.util.List lsTable = root.getChildren();//得到根節(jié)點(diǎn)下的所有子節(jié)點(diǎn)
    for (Iterator iterTable = lsTable.iterator(); iterTable.hasNext(); ) {
    Element elTable = (Element) iterTable.next();
    if (value.equals(elTable.getAttributeValue("name"))){
    classname = elTable.getAttributeValue("class");
    break;
    }
    }
    }
    catch (Exception ex) {
    ex.printStackTrace();
    }
    return classname;
    }  回復(fù)  更多評(píng)論
      
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2007-11-20 18:01 | 我的java生涯
    我們這個(gè)主要是消息發(fā)送的接收,附件發(fā)送,接收,包括權(quán)限等數(shù)據(jù)的傳送  回復(fù)  更多評(píng)論
      
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    2008-01-03 13:42 | CGF
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    # re: java通過服務(wù)名動(dòng)態(tài)實(shí)例化對(duì)象并調(diào)用指定方法
    主站蜘蛛池模板: 亚洲丰满熟女一区二区哦| 亚洲精品日韩中文字幕久久久| 国产亚洲人成网站在线观看| 中文字幕一精品亚洲无线一区| 久久亚洲国产欧洲精品一| 久久久亚洲裙底偷窥综合| 中文字幕亚洲男人的天堂网络| 亚洲JIZZJIZZ妇女| 一级做a爰性色毛片免费| 免费91麻豆精品国产自产在线观看 | 免费观看激色视频网站bd| 成人免费视频试看120秒| 亚洲国产精品尤物YW在线观看| 亚洲熟妇av一区二区三区漫画| 久久精品国产亚洲AV嫖农村妇女| 狠狠色香婷婷久久亚洲精品| 理论片在线观看免费| 十八禁无码免费网站| 好爽又高潮了毛片免费下载 | 国产一精品一AV一免费孕妇| www.91亚洲| 蜜芽亚洲av无码精品色午夜| 激情无码亚洲一区二区三区 | GOGOGO高清免费看韩国| 在线观看免费视频资源| 国产一级淫片免费播放| 亚洲成人午夜在线| 国产精品亚洲专区无码唯爱网| 永久免费不卡在线观看黄网站| 18禁成年无码免费网站无遮挡| 国产AⅤ无码专区亚洲AV | 一本色道久久综合亚洲精品| 亚洲中文无码线在线观看| 色妞www精品视频免费看| 50岁老女人的毛片免费观看| 亚洲国产成人VA在线观看| 亚洲美女一区二区三区| 人妻仑刮八A级毛片免费看| 中文字幕免费视频| 亚洲国产精品无码久久久久久曰 | 久久青青草原亚洲AV无码麻豆|