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

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

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

    隨筆-95  評(píng)論-31  文章-10  trackbacks-0
    拋開MyEclipse,根據(jù)servlet規(guī)范,java_web應(yīng)用必須采用固定的目錄結(jié)構(gòu)。
    即:項(xiàng)目名/WEB-INF/classes
          項(xiàng)目名/WEB-INF/lib
          項(xiàng)目名/WEB-INF/web.xml
    xfire部署webservice需要在classes下面建立目錄META-INF/xfire/services.xml
     1<?xml version="1.0" encoding="UTF-8"?>
     2<beans xmlns="http://xfire.codehaus.org/config/1.0">
     3<service>
     4  <name>TeacherContent</name>
     5  <serviceClass>services.ITeacherManager</serviceClass>
     6  <implementationClass>services.TeacherManager</implementationClass>
     7  <scope>request</scope>
     8</service>
     9
    10</beans>
    里面的參數(shù)name、serviceClass、implementationClass、scope一看就明白

    重點(diǎn):寫好服務(wù)端代碼后,只要里面的方法返回值不是map,那么客戶端代碼就統(tǒng)統(tǒng)可以用以下代碼調(diào)用獲得返回值
    1//假設(shè)存在一個(gè)接口為IUser
    2String ulr="webservice地址";
    3Service service=new ObjectServiceFactory().create(IUser.class);
    4IUser user = (IUser)new XFireProxyFactory().create(service,url);
    5//調(diào)用
    6user.方法();

    如果服務(wù)端接口代碼里的某個(gè)方法返回值為map,那么需要在該類同一目錄下建立名字為接口.aegis.xml 名字必須和該接口名字一致只是多了.aegis.xml后綴名文件
    內(nèi)容如下(里面均為自己測(cè)試成功的內(nèi)容):
     1<?xml version="1.0" encoding="UTF-8"?>
     2<mappings>
     3<mapping>
     4    <method name="getGradesMap">
     5     <return-type componentType="entity.Grades"/>
     6    </method>
     7    <method name="getStudentMap">
     8    <return-type componentType="entity.Student"/>
     9    </method>
    10    <method name="setMaps">
    11    <parameter index="0" componentType="entity.Student"/>
    12    <parameter index="1" componentType="entity.Grades"/>
    13    <return-type keyType="entity.Student" componentType="entity.Grades"/>
    14    </method>
    15</mapping>
    16</mappings>
    17
    18
    method的name屬性為該返回值為map的接口方法名字
    return-type的componentType表示返回類型為復(fù)雜類型(就是個(gè)自定義對(duì)象)
    如果返回值為這種Map<Integer,Student>那么就直接寫一個(gè)componentType屬性即可
    如果返回值為這種Map<Student,Teacher>那么要寫成<return-type keyType="包名.Student" componentType="包名.Teacher"/>
    如果該方法有參數(shù),那么parameter index="0"表示第一個(gè)參數(shù) 依次類推

    總之:如果服務(wù)端的接口方法有返回值且是map,那么一定要寫一個(gè)接口.aegis.xml文件否則客戶端無法調(diào)用。
    以上測(cè)試沒有使用JAXB,如果根據(jù)wsdl文件生成客戶端代碼,那么需要使用JAXB的API進(jìn)行調(diào)用服務(wù)端的webservice。
    在MyEclipse中可以根據(jù)wsdl生成客戶端代碼,流程如下:
    選中建好的客戶端webservice項(xiàng)目-點(diǎn)擊new web service-輸入webservice地址 一步一步操作即可生成客戶端代碼。
    這種方法與上面的方式不同點(diǎn)在于,自定義對(duì)象的賦值,全部變?yōu)镴AXBElement(new QName("命名空間","屬性名字"),基本屬性.class,"屬性值");
    例如通過wsdl生成客戶端后一個(gè)自定義對(duì)象里面包含如下屬性:
    1    @XmlElementRef(name = "address", namespace = "http://service.patientservice.huahai.com", type = JAXBElement.class)
    2    protected JAXBElement<String> address;
    JAXBElement(new QName("命名空間","屬性名字"),基本屬性.class,"屬性值");
    命名空間=http://service.patientservice.huahai.com
    屬性名字=address
    基本屬性=String
    屬性值=澳大利亞
    即和上面一一對(duì)應(yīng)

    xfire簡(jiǎn)單用法就上述這么多,明天補(bǔ)上與spring集成的代碼以及關(guān)于前處理后處理(即handler)以及異常處理的代碼





    posted on 2011-05-30 17:48 朔望魔刃 閱讀(554) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 精品人妻系列无码人妻免费视频| 美女视频黄的全免费视频| 亚洲成人午夜在线| AV无码免费永久在线观看| 国产亚洲欧美在线观看| 亚洲色成人中文字幕网站| 91久久成人免费| 四虎一区二区成人免费影院网址| 久久亚洲精品成人综合| 最好免费观看韩国+日本| 久久久精品视频免费观看| 亚洲av永久综合在线观看尤物| 免费jlzzjlzz在线播放视频| 久操视频免费观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 伊人免费在线观看高清版| 亚洲人成片在线观看| 亚洲中文字幕无码不卡电影| 色窝窝免费一区二区三区 | 91免费精品国自产拍在线不卡| 无码毛片一区二区三区视频免费播放| 久久精品国产亚洲AV高清热| 亚洲色婷婷综合开心网| 免费不卡视频一卡二卡| a级片在线免费看| 小说专区亚洲春色校园| 亚洲一区二区三区高清不卡| 亚洲精品亚洲人成人网| 亚洲国产成人一区二区精品区| 最近免费中文字幕4| 99蜜桃在线观看免费视频网站| 麻豆一区二区三区蜜桃免费| 亚洲av无码电影网| 亚洲国产一区国产亚洲| 国产亚洲精品不卡在线| 精品久久久久久久免费人妻| 久视频精品免费观看99| 色欲A∨无码蜜臀AV免费播| av午夜福利一片免费看久久| 亚洲国产成人精品无码区二本| 亚洲国产高清美女在线观看|