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

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

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

    隨筆-22  評論-6  文章-17  trackbacks-0

    簡單的webservice開發例子

    Axis支持三種web ?service的部署和開發,分別為: ?
    ?
    1、Dynamic ?Invocation ?Interface ?( ?DII) ?
    ?
    2、Stubs方式 ?
    ?
    3、Dynamic ?Proxy方式 ?
    ?
    二、編寫DII(Dynamic ?Invocation ?Interface ?)方式web服務 ?
    ?
    1.編寫服務端程序HelloClient ?
    ?
    ?
    public ?class ?HelloClient ?
    { ?
    ? ? ? ?public ?String ?getName(String ?name) ?
    ? ? ? ?{ ?
    ? ? ? ? ? ? ? ?return ?"hello ?"+name; ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    2、將源碼拷貝到Axis_HOME下,重命名為 ?HelloClient.jws ? ?
    ?
    3、訪問連接http://localhost:8080/Axis/HelloClient.jws?wsdl,頁面顯示Axis自動生成的wsdl ? ?
    ?
    4、編寫訪問服務的客戶端 ?TestHelloClient.java ? ?
    ?
    ?
    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(); ?
    ? ? ? ? ? ? ? ?} ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    三、編寫Dynamic ?Proxy方式訪問服務 ? ?
    ?
    1、編寫部署服務端程序,同上邊DII方式,本次仍使用上邊部署的HelloClient ? ?
    ?
    2、編寫代理接口 ? ?
    ?
    ?
    public ?interface ?HelloClientInterface ?
    extends ?java.rmi.Remote ?
    { ?
    ? ? ? ?public ?String ?getName(String ?name) ?
    ?? ?? ?? ??throws ?java.rmi.RemoteException; ?
    } ?
    ? ?
    ?
    ?
    ?
    3、編寫并執行客戶端程序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() ?; ?
    ? ? ? ? ? ? ? ?} ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    四、編寫wsdd發布web服務,編寫stub ?client訪問web服務 ? ?
    ?
    1、編寫服務端程序server,SayHello.java,編譯server.SayHello.java ? ?
    ?
    ?
    package ?server; ?
    public ?class ?SayHello ?
    { ?
    ? ? ? ?public ?String ?getName(String ?name) ?
    ? ? ? ?{ ?
    ? ? ? ? ? ? ? ?return ?"hello ?"+name; ?
    ? ? ? ?} ?
    } ?
    2.編寫LogHandler.java ?
    import ?org.apache.Axis.AxisFault; ?
    import ?org.apache.Axis.Handler; ?
    import ?org.apache.Axis.MessageContext; ?
    import ?org.apache.Axis.handlers.BasicHandler; ?
    ?
    import ?java.util.Date; ?
    ?
    public ?class ?LogHandler ? ?
    extends ?BasicHandler ? ?
    { ?
    ?public ?void ?invoke ?
    (MessageContext ?msgContext) ? ?
    throws ?AxisFault ?
    ? ? ? ?{ ?
    ? ? ? ? ? ? ? ?/** ?Log ?an ?access ?each ?time ? ?
    ?? ?? ?? ?? ?? ?? ?? ??we ?get ?invoked. ?
    ? ? ? ? ? ? ? ? ?*/ ?
    ? ? ? ? ? ? ? ?try ?{ ?
    ? ? ? ? ? ? ? ? ? ? ? ?Handler ?serviceHandler ?
    ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??= ?msgContext.getService(); ?
    ?
    ? ? ? ? ? ? ? ? ? ? ? ?Integer ?numAccesses ?= ?
    ? ?(Integer)serviceHandler.getOption("accesses"); ?
    ? ? ? ? ? ? ? ? ? ? ? ?if ?(numAccesses ?== ?null) ?
    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?numAccesses ?= ?new ?Integer(0); ?
    numAccesses ?= ?new ?Integer ?
    (numAccesses.intValue() ?+ ?1); ?
    Date ?date ?= ?new ?Date(); ?
    ?String ?result ?= ? ?
    ?date ?+ ?": ?service ?" ?+ ?
    msgContext.getTargetService() ?+ ?
    " ?accessed ?" ?+ ?numAccesses ?+ ?" ?time(s)."; ?
    serviceHandler.setOption ?
    ("accesses", ?numAccesses); ?
    System.out.println(result); ?
    ? ? ? ? ? ? ? ?} ?catch ?(Exception ?e) ?
    ?? ?? ?? ?? ?? ?? ?? ??{ ?
    ? ? ? ? ? ? ? ? ? ? ? ?throw ?AxisFault.makeFault(e); ?
    ? ? ? ? ? ? ? ?} ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    3、編寫wsdd文件 ? ?
    ?
    ?
    deploy.wsdd ?
    <deployment ?xmlns= ?
    "http://xml.apache.org/Axis/wsdd/" ?
    ? ?xmlns:java= ?
    ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??"http://xml.apache.org/Axis/wsdd/providers/java"> ? ? ? ? ? ? ? ? ? ? ? ?
    ? ? ?<handler ?name="print" ?type="java:LogHandler"/> ? ?
    ?<service ?name="sayhello" ?
    ?provider="java:RPC"> ?
    ? ? ?<requestFlow> ?
    ? ? ? ? ?<handler ?type="print"/> ?
    ? ? ?</requestFlow> ?
    ? ?<parameter ?name="className" ? ?
    ? ?value="server.SayHello"/> ?
    ? ?<parameter ?name="allowedMethods" ?
    ? ?value="*"/> ? ? ?
    ?</service> ?
    </deployment> ?
    ? ?
    ?
    ?
    ?
    3、將編譯后的文件拷貝到Axis_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\Axis\WEB-INF\classes ? ?
    ?
    4、發布服務: ? ?
    ?
    java ?org.apache.Axis.client.AdminClient ?deploy.wsdd ? ?
    ?
    5、生成client ?stub文件 ? ?
    ?
    a:方式1 ? ?
    ?
    將SayHello.java拷貝到Axis_HOME/下,重命名為SayHello.jws, ? ?
    ?
    執行下面的命令生存client ?stub ? ?
    ?
    ?
    java ?org.apache.Axis.wsdl.WSDL2Java ? ?
    -p ?client ? ?http://localhost:8080 ?
    /Axis/services/SayHello.jws?wsdl ?
    ? ?
    ?
    ?
    ?
    b:方式2 ? ?
    ?
    執行如下命令生成SayHello.wsdl ? ?
    ?
    ?
    java ?org.apache.Axis.wsdl.Java2WSDL ?
    -oSayHello.wsdl ?-lhttp://localhost:8080 ?
    /Axis/services/SayHello ?-nsayhello ?server.SayHello ?
    ? ?
    ?
    ?
    ?
    執行如下命令生成client ?stub ? ?
    ?
    ?
    java ?org.apache.Axis.wsdl.WSDL2Java ? ?
    SayHello.wsdl ? ?-p ?client ?
    ? ?
    ?
    ?
    ?
    生成的stub ?client文件列表為: ? ?
    ?
    1.SayHello.java ? ?
    ?
    2.SayHelloService.java。 ? ?
    ?
    3.SayHelloServiceLocator.java ? ?
    ?
    4.SayHelloSoapBindingStub.java ? ?
    ?
    6、編寫客戶端程序,編譯并執行 ? ?
    ?
    ?
    public ?class ?SayHelloClient ?
    { ?
    ? ? ? ?public ?static ?void ?main(String[] ?args) ?
    ?? ?? ?? ??{ ?
    ? ? ? ? ? ? ? ?try ?
    ?? ?? ?? ?? ?? ?? ?? ??{ ?
    ? ? ? ?SayHelloService ?service ?= ?new ?client. ?
    ? ? ? ? ? ? ?SayHelloServiceLocator(); ?
    ? ? ? ? ? ? ? ? ? ?client.SayHello_PortType ? ?
    ?? ?? ?? ?? ?? ?? ?? ?? ? ?client ?= ?service.getSayHello(); ?
    ? ? ? ? ? ? ? ? ? ? ? ?String ?retValue=client.getName("zhangsan"); ?
    ? ? ? ? ? ? ? ? ? ? ? ?System.out.println(retValue); ?
    } ? ?
    catch ?(Exception ?e) ?
    { ?
    ?System.err.println ?
    ?("Execution ?failed. ?Exception: ?" ?+ ?e); ?
    ? ? ? ? ? ? ? ?} ?
    ? ? ? ?} ?
    }?

    posted on 2006-06-06 09:14 surffish 閱讀(828) 評論(2)  編輯  收藏

    評論:
    # re: 簡單的webservice開發例子[未登錄] 2007-09-04 11:02 | bruce
    為什么我按例子寫的。改了.jws后綴以后,訪問沒有反應?  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 免费无码国产V片在线观看| av永久免费网站在线观看 | 国产精品免费αv视频| 日韩人妻无码精品久久免费一 | 亚洲视频在线观看免费| 亚洲国产视频久久| 国产成人高清精品免费观看| 国产免费一区二区三区VR| 亚洲毛片基地日韩毛片基地| 成人免费观看男女羞羞视频| 免费H网站在线观看的| 亚洲精品无码国产| 美女被吸屁股免费网站| 日韩av无码成人无码免费| 亚洲成a人片在线观看无码专区| 亚洲成av人片天堂网无码】| 日韩人妻一区二区三区免费| 亚洲精品福利网站| 最近免费中文字幕视频高清在线看| 亚洲中文无韩国r级电影| 亚洲国产美女精品久久久| 免费中文字幕不卡视频| 亚洲av无码专区在线电影| aa级一级天堂片免费观看| 91在线精品亚洲一区二区| 国产自国产自愉自愉免费24区| 香蕉蕉亚亚洲aav综合| 精品熟女少妇aⅴ免费久久| 国产国产人免费视频成69大陆| 亚洲无mate20pro麻豆| 我的小后妈韩剧在线看免费高清版 | 国产免费一区二区三区免费视频 | 日韩欧美亚洲中文乱码| 国产精品亚洲产品一区二区三区| 特级无码毛片免费视频尤物| 亚洲精品无码久久久久去q | 亚洲精品视频免费 | 又粗又大又硬又爽的免费视频| 国产va免费精品| 亚洲人精品亚洲人成在线| 国产av无码专区亚洲国产精品|