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

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

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

    浪跡天涯
    web報表設計器....
    posts - 61,comments - 71,trackbacks - 0

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

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

    第二步:系統初始化是將所有服務名和路徑加載到一個靜態的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;
    ????}

    }


    第三步:定義一個接口類

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

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

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

    ?????}

    }
    第五步:定義接具體服務并實現接口類
    public?class?GnmkService?implements?Service?{

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

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


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

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

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

    FeedBack:
    # re: java通過服務名動態實例化對象并調用指定方法
    2007-11-20 08:45 | 隔葉黃鶯
    IOC組件像Spring不就是很好的幫助你完成這些事情的嗎  回復  更多評論
      
    # re: java通過服務名動態實例化對象并調用指定方法
    2007-11-20 09:30 | 我的java生涯
    我是在做一個統一消息認證平臺,不想太多的用第三方的東西.  回復  更多評論
      
    # re: java通過服務名動態實例化對象并調用指定方法
    2007-11-20 15:22 | feilong
    請問服務的配置文件是自己解析嗎?  回復  更多評論
      
    # re: java通過服務名動態實例化對象并調用指定方法
    2007-11-20 16:40 | 隔葉黃鶯
    統一消息認證用Ldap,一般應用服務器只需配置就行了,都不需要編碼實現  回復  更多評論
      
    # re: java通過服務名動態實例化對象并調用指定方法
    2007-11-20 17:59 | 我的java生涯
    服務的配置文件是自己解析@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();//得到根節點下的所有子節點
    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;
    }  回復  更多評論
      
    # re: java通過服務名動態實例化對象并調用指定方法
    2007-11-20 18:01 | 我的java生涯
    我們這個主要是消息發送的接收,附件發送,接收,包括權限等數據的傳送  回復  更多評論
      
    # re: java通過服務名動態實例化對象并調用指定方法
    2008-01-03 13:42 | CGF
    # re: java通過服務名動態實例化對象并調用指定方法
    2008-01-03 13:42 | CGF
    # re: java通過服務名動態實例化對象并調用指定方法
    # re: java通過服務名動態實例化對象并調用指定方法
    主站蜘蛛池模板: 亚洲视频在线观看一区| 91麻豆国产自产在线观看亚洲| 亚洲av无码乱码国产精品| 一二三四在线观看免费中文在线观看| 国产精品成人免费视频网站京东| 亚洲神级电影国语版| 日韩在线播放全免费| 亚洲人成网站在线观看播放青青| 日本片免费观看一区二区| 亚洲成av人片在线看片| 在人线av无码免费高潮喷水| 亚洲中文字幕无码av在线| 久久精品免费一区二区喷潮| 亚洲人成色777777老人头| 免费国产美女爽到喷出水来视频| 高潮毛片无遮挡高清免费| 亚洲五月午夜免费在线视频 | 亚洲色无码专区一区| 成年女人毛片免费观看97| 久久久久亚洲AV无码去区首| 天堂亚洲免费视频| 你懂得的在线观看免费视频| 亚洲综合日韩中文字幕v在线| 男女免费观看在线爽爽爽视频| 亚洲欧美日韩综合久久久| 亚洲国产成人影院播放| 久久综合九色综合97免费下载| 亚洲精品91在线| 亚洲?v无码国产在丝袜线观看| 成人精品视频99在线观看免费| 亚洲精品国产啊女成拍色拍| 女人被男人桶得好爽免费视频 | 一个人免费视频在线观看www| 亚洲黄色在线观看网站| 成年女人免费v片| 国产精品午夜免费观看网站| 亚洲色图综合网站| 亚洲高清视频一视频二视频三| 午夜免费啪视频在线观看 | 亚洲一区二区三区AV无码| 18成禁人视频免费网站|