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

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

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

    隨筆 - 251  文章 - 504  trackbacks - 0
    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!

    留言簿(14)

    隨筆分類

    收藏夾

    My Favorite Web Sites

    名Bloger

    非著名Bloger

    搜索

    •  

    積分與排名

    • 積分 - 202516
    • 排名 - 285

    最新評論

    目前看到的有三種比較簡單的方法:
    1使用靜態的stub
    通過wsdl2java工具,處理相應ws的wsdl文件,我們可以得到遠程ws的stub?直接調用這
    個stub即可
    AXIS提供的wsdl2java工具,如下:
    java?org.apache.axis.wsdl.WSDL2Java?(WSDL-file-URL)
    我們直接調用stub即可
    eclipse也有相應的插件可以直接import?wsdl來產生stub,如果你安裝了EMF?all?in?one版本的eclipse?3.1,就可以在視圖里把Web?Service的相關視圖打開,接著就可以通過Web?Service的Wizard來創建出相關的Web?Service?Client或者Server

    2?Dynamic?Proxy
    根據遠程wsdl,利用javax.xml.rpc.Service的getPort函數,可以得到遠程ws的一個?D
    ynamic?Proxy
    編寫代理接口

    public?interface?HelloClientInterface
    extends?Java.rmi.Remote
    {
    ????public?String?getName(String?name)
    ????????throws?Java.rmi.RemoteException;
    }
    ?

    客戶端程序TestHelloClient.Java?

    import?Javax.xml.rpc.Service;
    import?Javax.xml.rpc.ServiceFactory;
    import?Java.net.URL;
    import?Javax.xml.namespace.QName;

    public?class?TestHelloClient?
    {
    ????public?static?void?main(String[]?args)
    ????????{
    ????????try
    ????????{
    ???String?wsdlUrl?=?"http://localhost:8080/axis/HelloClient.jws?wsdl";
    ???String?nameSpaceUri?=?"http://localhost:8080/axis/HelloClient.jws";
    String?serviceName?=?"HelloClientService";
    String?portName?=?"HelloClient";
    ServiceFactory?serviceFactory?=?ServiceFactory.newInstance();
    Service?afService?=?serviceFactory.createService(new?URL(wsdlUrl),
    ???????????new?QName(nameSpaceUri,?serviceName));
    ?HelloClientInterface?proxy?=?(HelloClientInterface)afService.getPort(new?QName(
    ??????????????nameSpaceUri,?portName),?HelloClientInterface.class);
    ?System.out.println("return?value?is?"+proxy.getName("john")?)?;
    ????????}catch(Exception?ex)
    ????????{
    ????????????ex.printStackTrace()?;
    ????????}
    ????}
    }
    ?

    3?DII
    Dynamic?Invocation?Interface?這個最好理解,比如你動態獲得了一個類,只知道類的
    名字,你要調用他的一個方法,只好使用reflection得到你要調用的類,相應的參數信
    息,然后調用
    使用DII調用WS的時候,你知道的只是一個WSDL的地址,通過解析wsdl,你可以得到相應
    的ws?endpoint的信息,然后通過javax.xml.rpc.Call的setOperationName,?addParam
    eter等函數來指定要調用的函數,指定參數,然后調用
    提供DII調用的原因是,我們有可能使用程序自動的去動態調用網絡上的WS,而這個WS的
    一切信息都是來自其WSDL
    ,只有通過DII,我們才有可能動態的去調用這個ws
    例子:
    服務器端程序

    public?class?HelloClient
    {
    ????public?String?getName(String?name)
    ????{
    ????????return?"hello?"+name;
    ????}
    }
    把源碼拷貝到AXIS_HOME下,并改名為?HelloClient.jws

    客戶端程序
    import?org.apache.Axis.client.Call;
    import?org.apache.Axis.client.Service;
    import?Javax.xml.namespace.QName;
    import?Javax.xml.rpc.ServiceException;
    import?Java.net.MalformedURLException;
    import?Java.rmi.RemoteException;

    public?class?SayHelloClient2
    {
    ????public?static?void?main(String[]?args)
    ????????{
    ????????try
    ????????????????{
    ??String?endpoint?=??"http://localhost:8080/axis/HelloClient.jws";

    ????Service?service?=?new?Service();
    ????????????Call?call?=?null;

    ????????????call?=?(Call)?service.createCall();

    ????????????call.setOperationName
    ???(new?QName("http://localhost:8080/axis/HelloClient.jws",?"getName"));
    ????????????call.setTargetEndpointAddress(new?Java.net.URL(endpoint));

    ?String?ret?=?
    ?(String)?call.invoke(new?Object[]?
    ?????{"zhangsan"});
    ??System.out.println
    ??("return?value?is?"?+?ret);
    ????????}?
    ????????????????catch?(Exception?ex)
    ????????????????{
    ???????ex.printStackTrace();
    ????????}
    ????}
    }


    posted on 2006-08-11 09:21 matthew 閱讀(1071) 評論(0)  編輯  收藏 所屬分類: Web Services and SOA
    主站蜘蛛池模板: 中文字幕乱码免费看电影| 国产亚洲视频在线观看| 国产亚洲精品无码拍拍拍色欲| 免费毛片在线看不用播放器 | 国产亚洲sss在线播放| 久久久国产精品亚洲一区| 日韩一级在线播放免费观看| 91精品国产免费入口| 国产成人AV片无码免费| 亚洲第一视频在线观看免费| 黄色网页免费观看| 四虎国产精品成人免费久久| 国产精品亚洲精品日韩电影| 99亚洲精品卡2卡三卡4卡2卡| 精品亚洲成A人无码成A在线观看| 久久精品a亚洲国产v高清不卡| 精品亚洲成a人片在线观看| 亚洲熟妇av一区| 中文字幕亚洲综合久久综合| 亚洲精品无码专区在线| 黄页网站在线观看免费| 精品一卡2卡三卡4卡免费视频| 中文成人久久久久影院免费观看| 999任你躁在线精品免费不卡| 国产91免费在线观看| 免费在线观看的黄色网址| 久久噜噜噜久久亚洲va久| 亚洲人成色99999在线观看| 成年网站免费入口在线观看| 本免费AV无码专区一区| 国产精品视频免费一区二区| 亚洲AV中文无码乱人伦| 亚洲精品视频在线观看免费| 羞羞网站免费观看| 日本一区二区三区免费高清| 中文字幕专区在线亚洲| 亚洲日韩国产二区无码| 国产麻豆一精品一AV一免费| 五月婷婷亚洲综合| 中文字幕亚洲综合久久综合| 99热在线观看免费|