<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精品视频免费| 91成人免费观看| 亚洲精品tv久久久久久久久久| 亚洲av无码成人精品国产 | 精品香蕉在线观看免费| 亚洲AV成人片色在线观看| 男女作爱在线播放免费网站| 亚洲国产精品无码久久一线| 青青草原1769久久免费播放 | 亚洲国产精品美女| 无码国产精品一区二区免费虚拟VR | 色噜噜噜噜亚洲第一| 国产午夜影视大全免费观看| 亚洲乱妇老熟女爽到高潮的片| 免费无码黄动漫在线观看| 处破女第一次亚洲18分钟| 亚洲精品无码久久久| 3344在线看片免费| 久久久亚洲欧洲日产国码aⅴ| 国产成人免费在线| 亚洲精华国产精华精华液网站| 国产乱色精品成人免费视频| 九九热久久免费视频| 久久99亚洲网美利坚合众国| 91在线视频免费播放| 色五月五月丁香亚洲综合网| 亚洲一区二区三区免费| 日韩人妻无码精品久久免费一| 亚洲午夜成激人情在线影院| 国产小视频在线观看免费| 不卡视频免费在线观看| 久久久无码精品亚洲日韩京东传媒| 一个人免费观看视频www| 特级aaaaaaaaa毛片免费视频| 国产精品亚洲A∨天堂不卡| 无遮免费网站在线入口| 看亚洲a级一级毛片| 亚洲AV无一区二区三区久久| 成人午夜视频免费| 水蜜桃视频在线观看免费播放高清 | 免费精品人在线二线三线区别|