<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)航:
     
    主站蜘蛛池模板: 免费成人在线电影| 暖暖日本免费中文字幕| 毛片免费观看视频| jizz18免费视频| 99精品视频在线视频免费观看 | 亚洲男人的天堂www| h在线看免费视频网站男男| 亚洲中久无码不卡永久在线观看| 美女视频黄频a免费| 亚洲成av人片一区二区三区| 成人免费视频一区二区| 亚洲中文字幕不卡无码| 日韩免费在线视频| 亚洲区视频在线观看| 免费涩涩在线视频网| 一级毛片免费全部播放| 亚洲AV午夜福利精品一区二区| 无码国产精品一区二区免费16 | 亚洲综合图片小说区热久久| 综合在线免费视频| 亚洲av乱码中文一区二区三区| 亚洲精品无码永久在线观看 | 啦啦啦高清视频在线观看免费| 亚洲宅男天堂在线观看无病毒| 最近中文字幕大全免费版在线| 亚洲国产综合91精品麻豆| 久久久久久久免费视频| 在线精品自拍亚洲第一区| 中国亚洲女人69内射少妇| 最近的中文字幕大全免费8| 114级毛片免费观看| 337p日本欧洲亚洲大胆艺术| 一区二区三区福利视频免费观看| 亚洲精品一区二区三区四区乱码| 无码乱肉视频免费大全合集| 猫咪免费人成网站在线观看入口| 亚洲色成人WWW永久网站| 一个人免费观看视频www| 久久www免费人成精品香蕉| 免费一级成人毛片| 久爱免费观看在线网站|