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

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

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

    rethink

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      11 隨筆 :: 0 文章 :: 16 評論 :: 0 Trackbacks

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


    2、相關代碼
    ??????2.1?服務器端
    ????????????

    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>學生檔案信息</title></head><body> " );
    43 ????????out.println( " <h2>學生檔案信息</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、部署相關
    ??????3.1 類庫
    ????????????java類庫,xfire類庫,dom4j類庫
    ??????3.2 目錄結構
    ????????????WEB-INF
    ????????????--- web.xml
    ????????????--- lib
    ????????????--- classes
    ???????????? ???--- com.howelltech.xfire.*.class
    ??????????????? --- META-INF
    ????????????????????? --- xfire
    ???????????????????????????services.xml
    ??????3.3 測試url
    ??????????? http://localhost:8080/xfire/ws

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

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

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 暖暖日本免费在线视频| 午夜成人免费视频| 亚洲激情电影在线| 精品无码国产污污污免费| 特黄特色的大片观看免费视频| 狠狠亚洲婷婷综合色香五月排名| 99re6免费视频| 亚洲成a人无码亚洲成www牛牛| 亚洲熟妇av一区二区三区| 久久久久久免费视频| 午夜免费国产体验区免费的| 亚洲精品免费在线| 少妇亚洲免费精品| 亚洲网站在线免费观看| 日韩免费高清一级毛片| 亚洲性69影院在线观看| 五月婷婷亚洲综合| 国产精品久久久久免费a∨| 久久国产乱子伦精品免费午夜 | 九九综合VA免费看| 亚洲精品资源在线| 亚洲人成色7777在线观看不卡| 成人免费的性色视频| sss日本免费完整版在线观看| 亚洲国产成人资源在线软件 | 久久久久亚洲av无码专区导航 | 四虎在线免费播放| 污污网站免费观看| CAOPORM国产精品视频免费| 亚洲免费福利在线视频| 亚洲午夜精品久久久久久人妖| 亚洲不卡无码av中文字幕| 成人免费视频一区| 久久国产免费观看精品3| 国产成人自产拍免费视频| 亚洲精品成a人在线观看夫| 亚洲国产精品美女| 亚洲午夜精品久久久久久人妖| 亚洲人成在线播放网站| 亚洲AⅤ永久无码精品AA| 女人毛片a级大学毛片免费|