`
hcx_2008
  • 浏览: 122216 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

简单的webservice开发例子

    博客分类:
  • J2EE
阅读更多
作者:wjhdtx
摘自csdn
简单的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); 
               } 
       } 
分享到:
评论

相关推荐

    XFire_WebService开发例子.zip

    【标题】"XFire_WebService开发例子.zip" 提供了一个关于使用XFire框架构建Web服务的实际示例。这个压缩包包含了一个详细的文档,名为“XFire_WebService开发例子.docx”,该文档很可能是对如何利用XFire框架创建和...

    XFire_WebService开发例子 详解

    XFire_WebService 开发 例子 详解 包含图解 详细的开发步骤

    Webservice接口开发简单例子

    【标题】:“Webservice接口开发简单例子” 在IT行业中,Web Service是一种基于互联网的、用于应用程序之间进行交互的标准化通信方式。本示例将探讨如何开发一个简单的Web Service接口,以便不同系统间能够共享数据...

    cxf webservice开发例子

    这是一个用cxf进行webservice开发的小例子,解决了no cxf bean等小问题,采用maven组织,接口可通过web发布,并带了测试demo。整个过程参考:http://developer.51cto.com/art/201205/333868.htm,大家可以继续完善

    c# 开发webservice的小例子

    标题:“C# 开发WebService的小例子” 首先,我们需要了解C#语言,它是.NET框架的一部分,由微软开发,专为构建高效、类型安全的面向对象的应用程序。C#语法简洁,易于学习,特别适合开发Web服务。 描述:“基于VS...

    XFire_WebService开发例子

    注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个基于XML的通讯协议用于分散和分布式环境下网络信息交换。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标...

    较完整的webservice例子

    【标题】:“较完整的Webservice例子” 在IT领域,Web Service是一种基于开放标准(如XML、WSDL和SOAP)的,使得不同系统间能够通过网络进行互操作的技术。本资源提供了一个较为完整的Webservice实现案例,它可以...

    webservice接口例子

    标题中的“webservice接口例子”是指该资源包含一个或多个实际的WebService接口示例,可能涵盖了如何创建、调用以及处理响应等方面。这些例子可以帮助开发者更好地理解WebService的工作原理,以及如何在实际项目中...

    java webService接口开发案例

    Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...

    webservice简单例子,Tomcat

    Web服务(Web Service)是一种基于互联网的、采用标准的XML(Extensible Markup Language)来交换数据的应用...学习和实践这个例子,有助于深入理解Web服务的工作原理,对于从事Java Web开发的人员来说是非常有价值的。

    rad开发webservice的例子

    标题“rad开发webservice的例子”表明我们将探讨如何使用Rational Application Developer (RAD) 这个集成开发环境来创建Web服务。RAD是IBM提供的一款强大的Java和Web应用程序开发工具,它集成了多种开发技术,包括对...

    java开发webservice的简单例子

    这个简单的例子展示了Java如何使用JAX-WS创建和消费Web服务。实际开发中,可能还需要处理异常、安全、性能优化等问题。此外,JAX-RS提供了一种更简洁的RESTful Web服务开发方式,适合JSON数据交换和非SOAP通信场景。...

    webservice实例

    你需要定义一个Java接口,然后使用@WebService注解标记该接口,实现接口中的方法以提供服务。 - WSDL生成:JAX-WS可以自动生成WSDL文件,描述服务的接口和消息格式,供客户端调用。 - Tomcat或Jetty等应用服务器:...

    axis2webservice接口例子

    - 如何创建一个简单的Java接口并标记为@WebService。 - 如何编写服务实现类,实现服务接口。 - 了解并编写WSDL文件,定义服务接口和消息格式。 - 使用Axis2工具将服务打包成.aar文件,并部署到Axis2服务器上。 - ...

    webservice小例子

    本示例"webservice小例子"旨在提供一个基础的Web服务接口开发与客户端调用的教程。下面我们将深入探讨Web服务的核心概念、工作原理以及如何创建和使用Web服务。 1. **Web服务核心概念**: - **SOAP(Simple Object...

    SOAP WebService简单例子

    【SOAP WebService简单例子】 SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web上交换结构化和类型化的信息。它允许服务提供者和消费者之间进行远程调用,使得分布式应用程序能够相互通信。在...

    java开发webService完整例子借鉴.pdf

    Java 开发 Web 服务完整例子 本文档主要讲述了 Java 开发 Web 服务的完整例子,包括使用 JDK 中的 Web 服务 API 实现 Web 服务,以及使用 XFire 工具来生成 Web 服务。 一、使用 JDK 中的 Web 服务 API 实现 Web ...

    C#调用WebService实例与开发教程(推荐)

    Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI...

Global site tag (gtag.js) - Google Analytics