`
农村哥们
  • 浏览: 293312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

webservice实例

阅读更多
简单的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); 
               } 
       } 

分享到:
评论

相关推荐

    WebService教程+实例+代码提示功能WebService实例.rar

    这个"WebService教程+实例+代码提示功能WebService实例.rar"压缩包文件显然包含了关于WebService的学习资料、实例代码和可能的代码提示功能,旨在帮助用户深入理解和实践WebService的开发。 首先,"教程地址.txt"很...

    C# webservice实例与在IIS上的部署

    **C# Webservice实例与在IIS上的部署** 在IT领域,C# Webservice是一种基于.NET框架的服务,用于实现应用程序间的通信。它允许通过HTTP协议传递数据,使得不同平台的应用程序能够共享信息和服务。本教程将详细介绍...

    C#调用WebService实例和开发(wsdl).rar

    在本例中,"C#调用WebService实例和开发(wsdl).pdf"可能包含详细的步骤和代码示例。 2. **添加引用**:将生成的代理类添加到你的项目中,这样就可以在C#代码中直接调用Web服务的方法。 3. **实例化代理类**:...

    SAP&Java的Webservice实例

    SAP&Java的Webservice实例 Webservice 是一种基于 SOAP 传输协议,用 WSDL 描述,用 XML 封装数据的接口技术。由于其跨平台、跨防火墙、开发成本低、开发周期短等优势而被广泛应用,但也有局限性,包括传输负载大、...

    Java使用SOAP获取webservice实例解析

    ### Java使用SOAP获取WebService实例解析 #### WebService简介 WebService是一种跨编程语言和操作系统平台的、在网络上进行数据交换的一种方式。它使用标准的Internet协议,如HTTP、XML、SOAP等来实现不同系统间的...

    Webservice实例

    【WebService实例】 在IT行业中,WebService是一种基于开放标准(如XML、SOAP、WSDL和UDDI)的Web应用程序接口(API),它允许不同系统之间的数据交换和互操作性。这种技术使得开发者可以创建可跨平台、跨语言的...

    SSH整合cxf webservice实例

    SSH整合CXF Webservice实例详解 在Java世界中,SSH(Spring、Struts、Hibernate)是一种常见的企业级应用开发框架组合,它提供了强大的MVC(Model-View-Controller)架构支持,以及持久层管理和业务逻辑处理。而CXF...

    WebService实例

    【WebService实例】是Java WebService服务端开发的一个实践案例,主要展示了如何创建、部署和使用一个简单的WebService。在本文中,我们将深入探讨WebService的核心概念、Java WebService的实现技术以及如何进行服务...

    webService实例(java面试必用)

    标题"webService实例(java面试必用)"指出,这是一个针对Java开发者,尤其是面试准备者的Web Service实践教程。在Java面试中,理解Web Service的基本概念、工作原理和如何实现是必不可少的技能。 描述"Java中的...

    java调用webservice实例

    ### Java调用WebService实例解析与知识点详解 #### 核心概念与原理 在现代软件开发中,服务端之间以及客户端和服务端之间的通信是至关重要的。Web Service作为一种标准的、跨平台的服务实现方式,允许不同语言编写...

    XFire建立Webservice实例,入门级别,适合初学者

    【XFire建立Webservice实例详解】对于初学者来说,理解并构建一个Web Service是一个重要的学习步骤,而XFire作为一款曾经流行的开源框架,提供了一种简单的方法来创建和部署Web Service。本文将详细介绍如何利用...

    详解axis调用webservice实例

    标题中的“详解axis调用webservice实例”表明我们将探讨如何使用Apache Axis库来调用Web服务。Apache Axis是一个开源工具,它允许Java开发者创建、部署和使用Web服务。在这个实例中,我们会有机会看到实际的Java代码...

    java webservice实例教程PPT

    java webservice实例教程ppt,共15讲,java webservice实例教程适合对象:想要学习SOA面向服务编程思想,学习Webservice技术,希望学习系统间通信设计的Java设计开发人员。java webservice实例教程适合于各个层次的...

    Myeclipse创建WebService实例-很好用.doc

    Myeclipse创建WebService实例-很好用.doc 验证成功

    Java开发WebService实例

    ### Java开发WebService实例详解 在IT领域,尤其是企业级应用开发中,WebService作为一种标准化的、跨平台的服务交互方式,被广泛应用于系统间的数据交换与服务调用。本文将基于给定的“Java开发WebService实例”...

    php调用webservice及myeclipse创建webservice实例

    在提供的压缩包文件中,"php+webservice"很可能包含了PHP代码文件,用于演示如何调用由MyEclipse创建的Web服务。这些文件可能包括一个PHP脚本,该脚本使用SoapClient类与Web服务交互,以及MyEclipse项目中的源代码和...

    java实现webservice实例.doc

    "Java实现WebService实例" WebService是基于XML的、分布式的、跨语言的应用程序通信协议。它允许不同的应用程序之间进行交互和集成,从而实现业务逻辑的复杂交互。Java是其中一种常用的实现WebService的语言。 在...

Global site tag (gtag.js) - Google Analytics