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

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

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

    rethink

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      11 隨筆 :: 0 文章 :: 16 評(píng)論 :: 0 Trackbacks

    1、概述
    ??????本例試圖通過web service完成人員檔案查詢功能。
    ??????涉及到相關(guān)技術(shù):JAVA?XFIRE?DOM4J?


    2、相關(guān)代碼
    ??????2.1?服務(wù)器端
    ????????????

    1 package ?com.howelltech.xfire;
    2
    3 public ? interface ?IFileService? {
    4 ???? public ?String?getFile(String?studentName);
    5 }

    6

    ?1 package ?com.howelltech.xfire;
    ?2
    ?3 import ?java.util.HashMap;
    ?4 import ?java.util.Map;
    ?5
    ?6 public ? class ?FileService? implements ?IFileService? {
    ?7 ???? public ?FileService()? {}
    ?8
    ?9 ???? public ?String?getFile(String?studentName)? {
    10 ????????Map?map? = ? new ?HashMap();
    11 ????????map.put( " name " ,? " jack " );
    12 ????????map.put( " sex " ,? " male " );
    13 ????????map.put( " age " ,? " 18 " );
    14 ???????? if (studentName.equalsIgnoreCase( " jack " ))? {
    15 ???????????? return ?( new ?Map2Xml().createDocument(map)).asXML();
    16 ????????}
    ? else ? {
    17 ???????????? return ? "" ;
    18 ????????}

    19 ????}

    20 }

    21

    ?1 package ?com.howelltech.xfire;
    ?2
    ?3 import ?java.io.IOException;
    ?4 import ?java.io.UnsupportedEncodingException;
    ?5 import ?java.util.HashMap;
    ?6 import ?java.util.Iterator;
    ?7 import ?java.util.Map;
    ?8 import ?java.util.Set;
    ?9
    10 import ?org.dom4j.Document;
    11 import ?org.dom4j.DocumentException;
    12 import ?org.dom4j.DocumentHelper;
    13 import ?org.dom4j.Element;
    14 import ?org.dom4j.io.OutputFormat;
    15 import ?org.dom4j.io.XMLWriter;
    16
    17 public ? class ?Map2Xml? {
    18 ???? public ?Document?createDocument(Map?map)? {
    19 ????????Document?document? = ?DocumentHelper.createDocument();
    20 ????????Element?root? = ?document.addElement( " root " );
    21
    22 ????????Set?set? = ?map.keySet();
    23 ???????? for ?(Iterator?iter? = ?set.iterator();?iter.hasNext();)? {
    24 ????????????String?key? = ?iter.next().toString();
    25 ????????????Element?el? = ?root.addElement(key).addText(map.get(key).toString());
    26 ????????}

    27 ???????? return ?document;
    28 ????}

    29
    30 ???? public ?Map?parseXml(String?xml)? {
    31 ????????Map?map? = ? new ?HashMap();
    32 ???????? try ? {
    33 ????????????Document?document? = ?DocumentHelper.parseText(xml);
    34 ????????????Element?root? = ?document.getRootElement();
    35 ???????????? for ?(?Iterator?i? = ?root.elementIterator();?i.hasNext();?)? {
    36 ????????????????Element?el? = ?(Element)?i.next();
    37 ????????????????map.put(el.getName(),?el.getText());
    38 ????????????}

    39 ????????}
    ? catch ?(DocumentException?e)? {
    40 ????????????e.printStackTrace();
    41 ????????}

    42 ???????? return ?map;
    43 ????}

    44 }

    45

    ??????2.2 客戶端

    ?

    ?1 package ?com.howelltech.xfire;
    ?2
    ?3 import ?java.io.IOException;
    ?4 import ?java.net.MalformedURLException;
    ?5 import ?java.util.HashMap;
    ?6 import ?java.util.Iterator;
    ?7 import ?java.util.Map;
    ?8 import ?java.util.Set;
    ?9
    10 import ?javax.servlet.ServletException;
    11 import ?javax.servlet.http.HttpServlet;
    12 import ?javax.servlet.http.HttpServletRequest;
    13 import ?javax.servlet.http.HttpServletResponse;
    14
    15 import ?org.codehaus.xfire.XFire;
    16 import ?org.codehaus.xfire.XFireFactory;
    17 import ?org.codehaus.xfire.client.XFireProxyFactory;
    18 import ?org.codehaus.xfire.service.Service;
    19 import ?org.codehaus.xfire.service.binding.ObjectServiceFactory;
    20
    21 public ? class ?Client4FileService? extends ?HttpServlet? {
    22
    23 ???? protected ? void ?doGet(HttpServletRequest?req,?HttpServletResponse?resp)
    24 ???????????? throws ?ServletException,?IOException? {
    25 ????????String?name? = ?req.getParameter( " name " );
    26 ????????String?defName? = ? " jack " ;
    27
    28 ???????? if ?( null ? != ?name)? {
    29 ????????????defName? = ?name;
    30 ????????}

    31 ????????String?responseGot? = ? "" ;
    32 ????????Map?map? = ? new ?HashMap();
    33 ???????? try ? {
    34 ????????????responseGot? = ?callWebService(defName);
    35 ????????????map? = ? new ?Map2Xml().parseXml(responseGot);
    36 ????????}
    ? catch ?(Exception?e)? {
    37 ????????????e.printStackTrace();
    38 ????????}

    39 ????????resp.setContentType( " text/html " );
    40 ????????java.io.PrintWriter?out? = ?resp.getWriter();
    41 ????????out.println( " <html> " );
    42 ????????out.println( " <head><title>學(xué)生檔案信息</title></head><body> " );
    43 ????????out.println( " <h2>學(xué)生檔案信息</h2> " );
    44 ????????out.println( " <B>Service?Request</B> " ? + ? " <br> " ? + ? " Transfer?funds?-? "
    45 ???????????????? + ? " <TABLE> " );
    46 ????????Set?set? = ?map.keySet();
    47 ???????? for ?(Iterator?iter? = ?set.iterator();?iter.hasNext();)? {
    48 ????????????String?key? = ?(String)?iter.next();
    49 ????????????out.println( " <TR><TD> " ? + ?key? + ? " :?</TD><TD> " ? + ?map.get(key)
    50 ???????????????????? + ? " </TD></TR> " );
    51 ????????}

    52 ????????out.println( " </TABLE> " );
    53 ????????out.println( " <br> " ? + ? " <B>Response?Received</B> " ? + ? " <br> " ? + ?responseGot);
    54 ????????out.println( " </body></html> " );
    55 ????}

    56
    57 ???? /*
    58 ?????*?call?the?web?service
    59 ?????*?
    60 ????? */

    61 ???? public ?String?callWebService(String?name)? throws ?Exception? {
    62
    63 ???????? // ?create?a?metadata?of?the?service
    64 ????????Service?serviceModel? = ? new ?ObjectServiceFactory()
    65 ????????????????.create(IFileService. class );
    66
    67 ???????? // ?create?a?proxy?for?the?deployed?service
    68 ????????XFire?xfire? = ?XFireFactory.newInstance().getXFire();
    69 ????????XFireProxyFactory?factory? = ? new ?XFireProxyFactory(xfire);
    70 ???????? // ?String?serviceUrl?=?"xfire.local: // file"?;
    71 ????????String?serviceUrl? = ? " http://localhost:8080/xfire/services/file " ;
    72 ????????IFileService?client? = ? null ;
    73 ???????? try ? {
    74 ????????????client? = ?(IFileService)?factory.create(serviceModel,?serviceUrl);
    75 ????????}
    ? catch ?(MalformedURLException?e)? {
    76 ????????????e.printStackTrace();
    77 ????????}

    78
    79 ???????? // ?invoke?the?service
    80 ????????String?serviceResponse? = ? "" ;
    81 ???????? try ? {
    82 ????????????serviceResponse? = ?client.getFile(name);
    83 ????????}
    ? catch ?(Exception?e)? {
    84 ????????????e.printStackTrace();
    85 ????????}

    86
    87 ???????? return ?serviceResponse;
    88 ????}

    89
    90 ???? /*
    91 ?????*?doPost():
    92 ????? */

    93 ???? protected ? void ?doPost(HttpServletRequest?req,?HttpServletResponse?resp)
    94 ???????????? throws ?ServletException,?IOException? {
    95 ????????doGet(req,?resp);
    96 ????}

    97 }

    98

    ??????2.3 配置文件

    ?1 <? xml?version="1.0"?encoding="ISO-8859-1" ?>
    ?2
    ?3 <! DOCTYPE?web-app?PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"?"http://java.sun.com/dtd/web-app_2_3.dtd" >
    ?4
    ?5 < web-app >
    ?6 ???? < servlet >
    ?7 ???????? < servlet-name > XFireServlet </ servlet-name >
    ?8 ???????? < display-name > XFire?Servlet </ display-name > ????????
    ?9 ???????? < servlet-class > org.codehaus.xfire.transport.http.XFireConfigurableServlet </ servlet-class >
    10 ???? </ servlet >
    11 ???? < servlet >
    12 ???????? < servlet-name > WsClient </ servlet-name >
    13 ???????? < display-name > WsClientServlet </ display-name >
    14 ???????? < description ></ description >
    15 ???????? < servlet-class > com.howelltech.xfire.Client4FileService </ servlet-class >
    16 ???? </ servlet >
    17 ????
    18 ???? < servlet-mapping >
    19 ???????? < servlet-name > XFireServlet </ servlet-name > ????????
    20 ???????? < url-pattern > /servlet/XFireServlet/* </ url-pattern > ????
    21 ???? </ servlet-mapping > ????????
    22 ???? < servlet-mapping > ????????
    23 ???????? < servlet-name > XFireServlet </ servlet-name > ????????
    24 ???????? < url-pattern > /services/* </ url-pattern > ????
    25 ???? </ servlet-mapping >
    26 ???? < servlet-mapping >
    27 ???????? < servlet-name > WsClient </ servlet-name >
    28 ???????? < url-pattern > /ws </ url-pattern >
    29 ???? </ servlet-mapping >
    30
    31 </ web-app >

    services.xml

    1 < beans? xmlns ="http://xfire.codehaus.org/config/1.0" > ????
    2 ???? < service > ????
    3 ???????? < name > file </ name > ????
    4 ???????? < namespace > studentFile </ namespace > ????
    5 ???????? < serviceClass > com.howelltech.xfire.IFileService </ serviceClass > ????
    6 ???????? < implementationClass > com.howelltech.xfire.FileService </ implementationClass > ??
    7 ???? </ service > ????
    8 </ beans >
    9


    3、部署相關(guān)
    ??????3.1 類庫(kù)
    ????????????java類庫(kù),xfire類庫(kù),dom4j類庫(kù)
    ??????3.2 目錄結(jié)構(gòu)
    ????????????WEB-INF
    ????????????--- web.xml
    ????????????--- lib
    ????????????--- classes
    ???????????? ???--- com.howelltech.xfire.*.class
    ??????????????? --- META-INF
    ????????????????????? --- xfire
    ???????????????????????????services.xml
    ??????3.3 測(cè)試url
    ??????????? http://localhost:8080/xfire/ws

    4、總結(jié)
    ??????感覺xfire實(shí)現(xiàn)web service還是挺容易的,不過實(shí)際項(xiàng)目中會(huì)遇到哪些問題,還有待以后的驗(yàn)證。下次繼續(xù)思考客戶端與服務(wù)器端交互問題,比如修改服務(wù)器端信息,傳輸文件、圖片等數(shù)據(jù)。

    posted on 2007-03-30 11:36 rethink 閱讀(2405) 評(píng)論(0)  編輯  收藏 所屬分類: web service

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日韩一区二区三区| 亚洲av午夜电影在线观看| 无码的免费不卡毛片视频| 超pen个人视频国产免费观看| 亚洲另类视频在线观看| 男女超爽视频免费播放| 国产yw855.c免费视频| 亚洲AV无码一区二区乱孑伦AS| 国产高潮久久免费观看| 色吊丝最新永久免费观看网站| 亚洲熟妇AV日韩熟妇在线| 67pao强力打造高清免费| 亚洲嫩草影院久久精品| 最近中文字幕国语免费完整 | 亚洲成aⅴ人片在线影院八| 五月婷婷免费视频| 久久久久亚洲av成人无码电影 | 无码人妻一区二区三区免费看| 亚洲国产精品久久久久| 日韩精品久久久久久免费| 亚洲国产精品专区在线观看| 亚洲人精品亚洲人成在线| 4虎1515hh永久免费| 亚洲无码一区二区三区| 无码专区一va亚洲v专区在线 | 亚洲成av人片不卡无码| 久久精品女人天堂AV免费观看 | 热久久这里是精品6免费观看| 日本免费v片一二三区| 亚洲Av高清一区二区三区| 免费无码看av的网站| 精品一区二区三区免费观看| 四虎永久在线精品免费观看地址| 一级一级一级毛片免费毛片| 亚洲高清视频在线观看| 成年私人影院免费视频网站| 一区二区3区免费视频| 亚洲免费福利视频| 亚洲免费一区二区| 三级黄色在线免费观看| 亚洲女久久久噜噜噜熟女|