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

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

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

    隨筆-95  評論-31  文章-10  trackbacks-0
    拋開MyEclipse,根據servlet規范,java_web應用必須采用固定的目錄結構。
    即:項目名/WEB-INF/classes
          項目名/WEB-INF/lib
          項目名/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>
    里面的參數name、serviceClass、implementationClass、scope一看就明白

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

    如果服務端接口代碼里的某個方法返回值為map,那么需要在該類同一目錄下建立名字為接口.aegis.xml 名字必須和該接口名字一致只是多了.aegis.xml后綴名文件
    內容如下(里面均為自己測試成功的內容):
     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表示返回類型為復雜類型(就是個自定義對象)
    如果返回值為這種Map<Integer,Student>那么就直接寫一個componentType屬性即可
    如果返回值為這種Map<Student,Teacher>那么要寫成<return-type keyType="包名.Student" componentType="包名.Teacher"/>
    如果該方法有參數,那么parameter index="0"表示第一個參數 依次類推

    總之:如果服務端的接口方法有返回值且是map,那么一定要寫一個接口.aegis.xml文件否則客戶端無法調用。
    以上測試沒有使用JAXB,如果根據wsdl文件生成客戶端代碼,那么需要使用JAXB的API進行調用服務端的webservice。
    在MyEclipse中可以根據wsdl生成客戶端代碼,流程如下:
    選中建好的客戶端webservice項目-點擊new web service-輸入webservice地址 一步一步操作即可生成客戶端代碼。
    這種方法與上面的方式不同點在于,自定義對象的賦值,全部變為JAXBElement(new QName("命名空間","屬性名字"),基本屬性.class,"屬性值");
    例如通過wsdl生成客戶端后一個自定義對象里面包含如下屬性:
    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
    屬性值=澳大利亞
    即和上面一一對應

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





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

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


    網站導航:
     
    主站蜘蛛池模板: 人与禽交免费网站视频| 99国产精品免费视频观看| 最近的中文字幕大全免费版| 亚洲毛片无码专区亚洲乱| 亚洲视频在线观看免费| 亚洲电影一区二区| 99久久人妻精品免费一区| 亚洲Av无码精品色午夜| 99免费在线观看视频| 亚洲日韩国产精品无码av| 91手机看片国产永久免费| 亚洲欧洲日产国码在线观看| 国产精品怡红院永久免费| 亚洲av无码电影网| 在线免费观看污网站| 国产亚洲综合久久| 国产亚洲色视频在线| 四虎成人精品永久免费AV| 亚洲伊人久久大香线蕉啊| 日韩在线免费播放| 四虎影视永久在线精品免费| 亚洲无线观看国产精品| 在线免费观看亚洲| 亚洲另类自拍丝袜第五页| 亚洲精品国产综合久久一线| 三上悠亚在线观看免费| 久久精品国产亚洲AV香蕉| 女人毛片a级大学毛片免费| 美女羞羞喷液视频免费| 亚洲人成色77777| 99热在线免费播放| 亚洲成AV人片高潮喷水| 亚洲欧洲无码AV电影在线观看| 99精品视频免费在线观看| 亚洲欧美日韩中文字幕在线一区| 亚洲国产精品国产自在在线| 污污网站免费观看| 国产成人精品亚洲| 亚洲电影中文字幕| 在线观看永久免费视频网站| 久久免费国产精品一区二区|