`

Axis客户端调用实例

    博客分类:
  • SOAP
阅读更多

最近一个项目中需要用到调用WebService,实现相关功能,由于一直都是用Xfire来实现WebSerivce的应用,所以这次调用客户用Axis生成的webService时,也选用Axis来生成客户端实现调用。应用的过程也是学习的过程,下面列出具体的例子,以大家参考,互相学习。

一 .环境配置

  • 首先下载Axis1.x和JDK、TOMCAT。
    Axis1.x : http://ws.apache.org/axis/ 我下载的是axis-bin-1_4
    JDK1.5和Tomcat5大家可以参考其它安装配置说明
  • 然后解压Axis1.4,然后将axis-1_4\webapps目录下的axis工程拷贝到TOMCAT的webapps目录下
  • 启动TOMCAT服务器,打开localhost:8080/axis/  如果正确显示,如果显示正确,可以看到如下: 

    Hello! Welcome to Apache-Axis.

     

    What do you want to do today?

    • Validation - Validate the local installation's configuration
      see below if this does not work.
    • List - View the list of deployed Web services
    • Call - Call a local endpoint that list's the caller's http headers (or see its WSDL).
    • Visit - Visit the Apache-Axis Home Page
    • Administer Axis - [disabled by default for security reasons]
    • SOAPMonitor - [disabled by default for security reasons]

    To enable the disabled features, uncomment the appropriate declarations in WEB-INF/web.xml in the webapplication and restart it.

     

    Validating Axis

    If the "happyaxis" validation page displays an exception instead of a status page, the likely cause is that you have multiple XML parsers in your classpath. Clean up your classpath by eliminating extraneous parsers.

    If you have problems getting Axis to work, consult the Axis Wiki and then try the Axis user mailing list.

 

  • 点击Validation可以查询需要的JAR是不是都存在,如果不存大,可以根据URL进行下载,下载后拷贝到Tomcat的webapps\axis\WEB-INF\lib目录下。如果JAR都存在了,则显示如下信息:

    Needed Components

    • Found SAAJ API ( javax.xml.soap.SOAPMessage ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\saaj.jar
    • Found JAX-RPC API ( javax.xml.rpc.Service ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\jaxrpc.jar
    • Found Apache-Axis ( org.apache.axis.transport.http.AxisServlet ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\axis.jar
    • Found Jakarta-Commons Discovery ( org.apache.commons.discovery.Resource ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar
    • Found Jakarta-Commons Logging ( org.apache.commons.logging.Log ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar
    • Found Log4j ( org.apache.log4j.Layout ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar
    • Found IBM's WSDL4Java ( com.ibm.wsdl.factory.WSDLFactoryImpl ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\wsdl4j-1.5.1.jar
    • Found JAXP implementation ( javax.xml.parsers.SAXParserFactory ) at an unknown location
    • Found Activation API ( javax.activation.DataHandler ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\activation.jar

    Optional Components

    • Found Mail API ( javax.mail.internet.MimeMessage ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\mail.jar
    • Found XML Security API ( org.apache.xml.security.Init ) at D:\dev\apache-tomcat-6.0.14\webapps\axis\WEB-INF\lib\xmlsec-1.4.1.jar
    • Found Java Secure Socket Extension ( javax.net.ssl.SSLSocketFactory ) at an unknown location

  • 到这步就可以进行Axis的服务端发布WebService了,Web Service服务端开发更多具体方法请参考其它文档。下面是一种介绍

      编写JAVA类Hello.java,内容如下:

java 代码 
  1. public class Hello{   
  2.  public String hello(String name){   
  3.   if(name==null)   
  4.    name = "";   
  5.   return "你好"+name+",欢迎来到Web服务的世界!";   
  6. }   
  7. }   
  8.   

  仅此而已,无需编译,将该文件改名为Hello.jws并拷贝到AXIS应用目录Tomcat 的 webapps\axis下。

下面我们就可以测试该Web服务了,打开浏览器并输入刚刚创建的文件名对应的URL地址 http://localhost:8080/axis/Hello.jws 浏览器显示如下结果:

There is a Web Service here
       
        Click to see the WSDL

点击可以查看到WSDL文档,如下 

xml 代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. -<wsdl:definitions  
  3.  targetNamespace="http://localhost:8080/axis/Hello.jws"  
  4.  xmlns="http://schemas.xmlsoap.org/wsdl/"  
  5.  xmlns="http://www.w3.org/2000/xmlns/"  
  6.  xmlns:apachesoap="http://xml.apache.org/xml-soap"    
  7.  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"  
  8.  xmlns:impl="http://localhost:8080/axis/Hello.jws"    
  9.  xmlns:intf="http://localhost:8080/axis/Hello.jws"  
  10.  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"    
  11.  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
  12.  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">  
  13.  - <wsdl:message name="helloRequest">  
  14.  <wsdl:part name="name" type="xsd:string" />    
  15.  </wsdl:message>  
  16.  + <wsdl:message name="helloResponse">  
  17.  - <wsdl:portType name="Hello">  
  18.  - <wsdl:operation name="hello" parameterOrder="name">  
  19.  <wsdl:input name="helloRequest" message="intf:helloRequest" />    
  20.  <wsdl:output name="helloResponse" message="intf:helloResponse" />  
  21.  </wsdl:operation>    
  22.  </wsdl:portType>  
  23.  - <wsdl:binding name="HelloSoapBinding" type="intf:Hello">    
  24.  <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />  
  25.  - <wsdl:operation name="hello">    
  26.  <wsdlsoap:operation soapAction="" />  
  27.  - <wsdl:input name="helloRequest">  
  28.  <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"    
  29.   namespace="http://DefaultNamespace" />     
  30.  </wsdl:input><wsdl:output name="helloResponse">     
  31.  <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"  
  32.   namespace="http://localhost:8080/axis/Hello.jws" />      
  33.  </wsdl:output>    
  34.  </wsdl:operation>    
  35.  </wsdl:binding>  
  36.  - <wsdl:service name="HelloService">  
  37.  - <wsdl:port name="Hello" binding="intf:HelloSoapBinding">  
  38.  <wsdlsoap:address location="http://localhost:8080/axis/Hello.jws" />    
  39.  </wsdl:port>     
  40.  </wsdl:service>    
  41.  </wsdl:definitions>  
  42.   
  • 得到WSDL文档后,现在进行AXIS客户端的生成。我们前面安装的AXIS环境中已经包含着这样的工具,它是一个JAVA类,类名为:org.apache.axis.wsdl.WSDL2Java。打开命令行窗口,转到刚才TOMCAT的 webapps\axis 目录下的WEB-INF子目录。确保Tomcat服务已经处于启动状态,键入命令 :
    Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/services/Hello?WSDL  //这个地方可以是WSDL文件,也可以是WSDL的路径地址

  • 该命令执行的结果是在当前所在目录(TOMCAT的 webapps\axis WEB-INF子目录)下产生一个子目录 ,该目录下有四个JAVA源文件,它们分别是:

    Hello.java 定义了Web服务接口,此例中只有一个hello方法。

    HelloService.java 定义了用于获取Web服务接口的方法。

    HelloServiceLocator.java 接口HelloService的具体实现。

    HelloSoapBindingStub.java Web服务客户端桩,通过该类与服务器交互。

  • 这四个JAVA类帮我们处理了大部分的逻辑,我们需要的仅仅是把这些类加到我们的项目然后创建一个我们自己的类来调用它们即可。为此我们新加一个类Main.java,为了方便,让这个类与刚产生的四个类都在同一个包下。内容如下:

    java 代码
    1. //Main.java   
    2. package localhost.axis.Hello_jws;   
    3. public class Main{   
    4. public static void main(String[] args) throws Exception{   
    5.  HelloService service = new HelloServiceLocator();   
    6.  Hello hello = service.getHello();    
    7.  System.out.println("Response:"+hello.hello("罐头"));    
    8.  }   
    9. }   
    10.   

    在Eclipse或把Java文件编译后执行,即可调用Axis的WebService。实现具体功能。

 

以上重点在于介绍Axis的客户端调用,对于初学者应该注意Axis环境的设置,和用WSDL2Java生成客户端文件。由于Axis1.x没有什么Eclipse插件可以自动化完成客户端的生成,所以这样有点繁琐。希望对大家有所帮助。

分享到:
评论

相关推荐

    Axis客户端调用代码

    标题中的"Axis客户端调用代码"指的是使用Axis库来实现对Web服务的调用。Axis提供了Java客户端API,使得开发人员能够通过编写Java代码来与远程Web服务进行交互。这个过程通常包括以下步骤: 1. **理解WSDL**: WSDL...

    AXIS2客户端调用实例

    总结来说,AXIS2客户端调用实例涵盖了从服务引用、配置到实际调用的全过程,涉及了AXIS2的核心组件和功能。理解和掌握这些知识点对于开发者在实际项目中使用AXIS2调用Web服务至关重要。通过实践和不断学习,开发者...

    axis2客户端调用带Ntlm认证例子

    本篇将详细介绍如何在Axis2客户端中调用需要NTLM认证的Web服务,并提供相关代码示例和所需库。 首先,NTLM是一种由Microsoft开发的身份验证协议,它基于质询-响应机制,用于在网络中保护用户的身份信息。在与NTLM...

    axis2客户端调用webService接口,精简jar包

    本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...

    axis2客户端调用服务端,带用户身份认证

    当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户能够访问服务。 首先,理解身份认证是网络安全的基础。在Web服务中,通常采用...

    cxf客户端调用axis服务端流程

    本文将深入探讨如何使用CXF客户端调用Axis服务端的流程。 ### 一、了解CXF和Axis **CXF**(CXF: Composite eXtensible Framework)是一个开源的Java Web服务框架,它提供了多种方式来创建和使用Web服务,包括JAX-...

    AXIS1.4客户端调用

    AXIS1.4客户端调用是关于Web服务客户端开发的一个主题,主要涉及到使用Apache Axis1.4库来创建和调用SOAP(Simple Object Access Protocol)服务。Apache Axis1.4是一个开源工具,它允许开发者在Java环境中轻松地...

    axis2客户端调用工程代码

    本篇将详细介绍如何在Axis2环境下编写客户端代码来调用工程中的服务。 1. **Axis2简介** - Axis2 是一个基于 Axis1 进行重构的高性能Web服务引擎,它提供了更加灵活的服务架构,支持多种协议如SOAP、REST和XML-RPC...

    详解axis调用webservice实例

    实例中的Java文件很可能是实现客户端调用Web服务的代码,且关键部分已做了注释,便于理解。 在实践中,调用Web服务的步骤通常包括以下几点: 1. **创建Stub(存根)**:使用Axis的wsdl2java工具,根据Web服务的WSDL...

    axis2 调用实例

    在本文中,我们将深入探讨Axis2调用实例,以及如何利用它来开发和使用Web服务。 1. **Axis2简介** - **SOAP**:SOAP是一种基于XML的消息传递协议,用于在分布式环境中交换结构化和类型化的信息。 - **Axis2架构**...

    axis调用webservice实例,包含jar包

    在描述中提到,“客户端用axis调用webservice实例”,意味着这个压缩包包含了完成该任务所需的Java类和资源。这通常包括配置文件、必要的库文件(jar包)以及可能的示例代码。开发者可以通过导入这些jar包到他们的...

    Axis客户端的几种实现方式

    标题中的“Axis客户端的几种实现方式”指的是在Java开发中,使用Axis库来创建和使用Web服务客户端的不同方法。Axis是Apache软件基金会的一个开源项目,它提供了一个强大的工具集,用于处理SOAP(简单对象访问协议)...

    Java WebService 简单实例 方式二(axis1直接调用方式)

    ##### 客户端调用 客户端程序可以通过如下方式调用远程服务: ```java import org.apache.axis.client.Service; import org.apache.axis.client.Call; import org.apache.axis.transport.http.HTTPTransport; ...

    Java+Axis2调用Web Services 网络接口

    Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...

    axis1实现webservice 及客户端调用方法 实现

    总之,使用Axis1实现Web服务和客户端调用是一个涉及多个步骤的过程,包括编写业务逻辑、生成WSDL、部署服务以及创建和调用客户端stub。理解这些步骤并熟练运用,可以帮助开发者构建高效、可靠的分布式系统。

    手写Axis1.4发布WebService以及客户端调用

    标题中的“手写Axis1.4发布WebService以及客户端调用”指的是使用Apache Axis1.4框架来创建和消费Web服务的过程。Apache Axis是用于构建Web服务的一个开源工具,它允许开发者将Java类转换为Web服务,并且提供客户端...

    axis2发布webservice和调用axis2服务接口

    3. **调用Web服务**:有了客户端代码,就可以通过服务代理类的实例来调用Web服务的方法。例如,对于上面的`HelloWorldService`,你可以创建一个`HelloWorldServiceStub`对象,然后调用它的`sayHello`方法,就像调用...

    axis2 webservice 实例(包括服务端代码及客户端代码)

    4. 客户端调用:学习如何创建Web服务客户端,调用服务并处理返回结果。 5. 服务器部署:在Tomcat等应用服务器上部署Web服务项目。 6. IDE集成:使用IDE进行项目导入和调试,熟悉相关操作流程。 通过这个实例,初学...

Global site tag (gtag.js) - Google Analytics