<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 閱讀(4199) 評論(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通過服務名動態實例化對象并調用指定方法
    主站蜘蛛池模板: 亚洲精品国产福利在线观看| 国产AV日韩A∨亚洲AV电影| 成人毛片免费视频| 羞羞视频免费观看| 亚洲电影一区二区| 小小影视日本动漫观看免费 | baoyu777永久免费视频| 久久青青草原亚洲av无码app| 午夜精品在线免费观看| 成全视频高清免费观看电视剧| 亚洲一区欧洲一区| 亚洲国产精品无码中文字| 在线观看国产情趣免费视频| 在线观看片免费人成视频无码| 亚洲人成未满十八禁网站| 亚洲免费精彩视频在线观看| 国产精品99久久免费| 最近中文字幕电影大全免费版 | 天天干在线免费视频| 在线毛片片免费观看| 精品亚洲福利一区二区| 亚洲综合无码一区二区三区| 久久久久亚洲AV无码专区网站| 在线免费观看污网站| 91av视频免费在线观看| xxxxx做受大片在线观看免费| 亚洲xxxx视频| 亚洲成人一级电影| 久久精品国产亚洲香蕉| 亚洲精品无码你懂的网站| 午夜视频免费观看| 成人黄色免费网站| 最近2018中文字幕免费视频| 99视频在线观看免费| g0g0人体全免费高清大胆视频| 亚洲妇女无套内射精| 久久夜色精品国产噜噜亚洲a| 2022年亚洲午夜一区二区福利| 亚洲人成在线播放网站| 亚洲精品97久久中文字幕无码| 日本一道一区二区免费看|