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

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

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

    隨筆-22  評(píng)論-6  文章-17  trackbacks-0

    簡(jiǎn)單的webservice開(kāi)發(fā)例子

    Axis支持三種web ?service的部署和開(kāi)發(fā),分別為: ?
    ?
    1、Dynamic ?Invocation ?Interface ?( ?DII) ?
    ?
    2、Stubs方式 ?
    ?
    3、Dynamic ?Proxy方式 ?
    ?
    二、編寫(xiě)DII(Dynamic ?Invocation ?Interface ?)方式web服務(wù) ?
    ?
    1.編寫(xiě)服務(wù)端程序HelloClient ?
    ?
    ?
    public ?class ?HelloClient ?
    { ?
    ? ? ? ?public ?String ?getName(String ?name) ?
    ? ? ? ?{ ?
    ? ? ? ? ? ? ? ?return ?"hello ?"+name; ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    2、將源碼拷貝到Axis_HOME下,重命名為 ?HelloClient.jws ? ?
    ?
    3、訪問(wèn)連接http://localhost:8080/Axis/HelloClient.jws?wsdl,頁(yè)面顯示Axis自動(dòng)生成的wsdl ? ?
    ?
    4、編寫(xiě)訪問(wèn)服務(wù)的客戶端 ?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(); ?
    ? ? ? ? ? ? ? ?} ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    三、編寫(xiě)Dynamic ?Proxy方式訪問(wèn)服務(wù) ? ?
    ?
    1、編寫(xiě)部署服務(wù)端程序,同上邊DII方式,本次仍使用上邊部署的HelloClient ? ?
    ?
    2、編寫(xiě)代理接口 ? ?
    ?
    ?
    public ?interface ?HelloClientInterface ?
    extends ?java.rmi.Remote ?
    { ?
    ? ? ? ?public ?String ?getName(String ?name) ?
    ?? ?? ?? ??throws ?java.rmi.RemoteException; ?
    } ?
    ? ?
    ?
    ?
    ?
    3、編寫(xiě)并執(zhí)行客戶端程序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() ?; ?
    ? ? ? ? ? ? ? ?} ?
    ? ? ? ?} ?
    } ?
    ? ?
    ?
    ?
    ?
    四、編寫(xiě)wsdd發(fā)布web服務(wù),編寫(xiě)stub ?client訪問(wèn)web服務(wù) ? ?
    ?
    1、編寫(xiě)服務(wù)端程序server,SayHello.java,編譯server.SayHello.java ? ?
    ?
    ?
    package ?server; ?
    public ?class ?SayHello ?
    { ?
    ? ? ? ?public ?String ?getName(String ?name) ?
    ? ? ? ?{ ?
    ? ? ? ? ? ? ? ?return ?"hello ?"+name; ?
    ? ? ? ?} ?
    } ?
    2.編寫(xiě)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、編寫(xiě)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、發(fā)布服務(wù): ? ?
    ?
    java ?org.apache.Axis.client.AdminClient ?deploy.wsdd ? ?
    ?
    5、生成client ?stub文件 ? ?
    ?
    a:方式1 ? ?
    ?
    將SayHello.java拷貝到Axis_HOME/下,重命名為SayHello.jws, ? ?
    ?
    執(zhí)行下面的命令生存client ?stub ? ?
    ?
    ?
    java ?org.apache.Axis.wsdl.WSDL2Java ? ?
    -p ?client ? ?http://localhost:8080 ?
    /Axis/services/SayHello.jws?wsdl ?
    ? ?
    ?
    ?
    ?
    b:方式2 ? ?
    ?
    執(zhí)行如下命令生成SayHello.wsdl ? ?
    ?
    ?
    java ?org.apache.Axis.wsdl.Java2WSDL ?
    -oSayHello.wsdl ?-lhttp://localhost:8080 ?
    /Axis/services/SayHello ?-nsayhello ?server.SayHello ?
    ? ?
    ?
    ?
    ?
    執(zhí)行如下命令生成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、編寫(xiě)客戶端程序,編譯并執(zhí)行 ? ?
    ?
    ?
    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) 評(píng)論(2)  編輯  收藏

    評(píng)論:
    # re: 簡(jiǎn)單的webservice開(kāi)發(fā)例子[未登錄](méi) 2007-09-04 11:02 | bruce
    為什么我按例子寫(xiě)的。改了.jws后綴以后,訪問(wèn)沒(méi)有反應(yīng)?  回復(fù)  更多評(píng)論
      
    # re: 簡(jiǎn)單的webservice開(kāi)發(fā)例子 2009-03-13 10:57 | roadrunners

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最近免费中文字幕大全视频| 成年女人永久免费观看片| 91成人在线免费观看| 亚洲中文字幕在线无码一区二区| 成年18网站免费视频网站| 免费精品国产自产拍在线观看| 亚洲中文字幕无码一区| 91久久成人免费| 精品国产日韩亚洲一区91| 亚洲精品国产成人专区| 日产乱码一卡二卡三免费| a级毛片免费高清毛片视频| 亚洲人成电影网站| 国产精品亚洲不卡一区二区三区 | 好爽…又高潮了毛片免费看 | 亚洲精品视频免费观看| 亚洲国产精品成人久久久| 亚洲国产aⅴ综合网| 在线永久看片免费的视频| 日本特黄特色AAA大片免费| 亚洲精品亚洲人成在线麻豆| 又黄又爽的视频免费看| 91久久成人免费| 成人无码WWW免费视频| 亚洲AV无码专区在线厂| 亚洲国产精品自在线一区二区| 国产成人免费片在线观看| 亚洲av无码专区在线观看下载| 国产成人A亚洲精V品无码| 天天天欲色欲色WWW免费| 在线看无码的免费网站| 国产免费MV大全视频网站| 亚洲日本va一区二区三区| 亚洲视频一区网站| 久久夜色精品国产亚洲| 一区国严二区亚洲三区| 国产无遮挡又黄又爽免费网站| 亚洲人成色4444在线观看| 亚洲视频日韩视频| 国产亚洲真人做受在线观看| 四虎永久成人免费影院域名|