<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人片在线播放器| 美女视频黄的全免费视频| 亚洲一区精彩视频| 在线jyzzjyzz免费视频| 亚洲av无码专区在线观看下载| 国产高清在线精品免费软件 | 亚洲中文字幕无码永久在线| 两个人www免费高清视频| 日韩va亚洲va欧洲va国产| 无码成A毛片免费| 亚洲白色白色在线播放| 成人免费无码大片A毛片抽搐| 鲁死你资源站亚洲av| 亚洲男女内射在线播放| 国产偷伦视频免费观看| 噜噜噜亚洲色成人网站∨| 无码永久免费AV网站| 美女黄频免费网站| 亚洲国产精品无码久久久秋霞2 | 久久亚洲精品中文字幕无码| 亚洲视频免费在线播放| 亚洲第一成年免费网站| 国产成人亚洲精品影院| 亚洲视频免费观看| 色妞www精品视频免费看| 亚洲色欲久久久综合网| 亚洲一区二区三区免费在线观看| 亚洲欧美日韩久久精品| 亚洲熟妇无码AV在线播放| 久久精品a一国产成人免费网站 | 亚洲另类图片另类电影| 又粗又大又硬又爽的免费视频| 少妇性饥渴无码A区免费 | 国产成人精品日本亚洲18图| 亚洲成A人片在线观看无码3D|