`
zzzzzz5530041
  • 浏览: 34338 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

axis2 tutorial--2种方法实现调用webservice

阅读更多
天气预报:

endpoint:  http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

wsdl:          http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl


方法1:用axis2\bin\wsdl2java生成stub。

1、到http://ws.apache.org/axis2下载axis-binary.zip

2、设置Axis2的Home环境:

变量名:AXIS2_HOME

值:D:\axis2\axis2-1.4.1-bin\axis2-1.4.1 就是你下下来的安装目录。

3、进入命令行:出入 %AXIS2_HOME%\bin\wsdl2java -uri http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl -p cn.com.webxml -s -o stub

参数:uri ---你要生成JAVA代码需要的wsdl文件,可以是网上的,也可以是本地的。

      -p  生成出的stub的包的生命    -o创建出的文件夹名。

完成后会在相对应的目录生成该JAVA文件,目录结构就是stub/src/cn.com.webxml

4、把该JAVA文件导入到ECLIPSE,注意eclipse的java project的buildpath加入%AXIS2_HOME%/lib下所有的JAR。不然会编译出错。

5、写自己的客户端
package com.citigroup.ws.client;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

import cn.com.webxml.WeatherWebServiceStub;
import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;

public class WeatherTest {

    /**
     * @param args
     * @throws Exception
     * @throws AxisFault
     */
    public static void main(String[] args) throws Exception {
        
        //2nd method to get weather
        WeatherWebServiceStub stub = new WeatherWebServiceStub();

        WeatherWebServiceStub.GetWeatherbyCityName getWeatherByCityName = new WeatherWebServiceStub.GetWeatherbyCityName();
        getWeatherByCityName.setTheCityName("上海");
        WeatherWebServiceStub.GetWeatherbyCityNameResponse rs = stub
                .getWeatherbyCityName(getWeatherByCityName);
        ArrayOfString arry = rs.getGetWeatherbyCityNameResult();
        String[] weatherArr = arry.getString();
        for (String result : weatherArr) {
            System.out.println(result);
        }

    }






方法2:不生成stub代码,通过OMElement 和endpoint访问


1、导入所需的axis2的jar

2、直接写客户端

package com.citigroup.ws.client;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

import cn.com.webxml.WeatherWebServiceStub;
import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;

public class WeatherTest {

    /**
     * @param args
     * @throws Exception
     * @throws AxisFault
     */
    public static void main(String[] args) throws Exception {
        //first method to get weather
//        WeatherTest s = new WeatherTest();
//          s.getResult();
          System.out.println("---------------------------");
     

    }

    private static EndpointReference targetEPR = new EndpointReference(
            "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");

    public void getResult() throws Exception {
        ServiceClient sender = new ServiceClient();
        sender.setOptions(buildOptions());
        OMElement result = sender.sendReceive(buildParam());
        System.out.println(result);
    }

    private static OMElement buildParam() {
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace("http://WebXml.com.cn/", "");
        OMElement data = fac.createOMElement("getWeatherbyCityName", omNs);
        OMElement inner = fac.createOMElement("theCityName", omNs);
        inner.setText("成都");
        data.addChild(inner);
        return data;
    }

    private static Options buildOptions() {
        Options options = new Options();
        options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
        options.setAction("http://WebXml.com.cn/getWeatherbyCityName");
        options.setTo(targetEPR);
        // options.setProperty 如果不是通过代理上网,此句可省
        // options.setProperty(HTTPConstants.PROXY, buildProxy());
        options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
        return options;
    }
}
分享到:
评论

相关推荐

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    总结来说,Apache Axis2是强大的Web服务框架,提供了两种部署方式,分别是二进制包和WAR文件,适应不同的开发和部署需求。理解这两个包的用途和内部结构对于有效利用Axis2来创建和部署Web服务至关重要。

    axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_

    标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...

    axis2c-bin-1.6.0 axis2c-src-1.6.0

    axis2c-bin-1.6.0-linux.tar.gz axis2c-bin-1.6.0-win32.zip axis2c-src-1.6.0.tar.gz axis2c-src-1.6.0.zip 加md5

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

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

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

    总的来说,使用Axis2客户端调用WebService接口是一种常见的开发实践,通过精简jar包可以优化项目的体积,提高部署效率。理解这个过程并掌握如何精简jar包,对于任何涉及到Web服务的开发工作都是十分有益的。

    axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip

    6. **使用方法**:安装插件后,在Eclipse中可以通过“新建”-> "其他" -> "Axis2" 来找到由这两个插件提供的各种项目模板。例如,可以创建新的Axis2服务项目,或者从WSDL文件生成客户端代码。此外,还可以使用插件...

    axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2

    标题中的"axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2"指的是两个与Apache Axis2相关的Eclipse插件:Axis2代码生成插件和Axis2服务插件,它们是版本1.6.2的。Apache Axis2是一个流行的...

    webService 生成插件axis2-idea-plugin-1.7.8

    webService 生成插件axis2- idea-plugin-1.7.8

    [JAVA]-Axis-Webservice-Demo

    Java Axis Web服务示例(`[JAVA]-Axis-Webservice-Demo`)提供了发布和调用Web服务的实际操作步骤。通过学习和实践这个示例,开发者可以更好地掌握使用Axis创建Web服务的技术,理解Web服务的基本原理,以及如何通过...

    axis2-eclipse-service与axis2-eclipse-codegen插件

    目前axis2最高版本是2.0以上的版本,但是eclipse和myeclipse都不支持,无奈只能使用低版本的插件1.6.3;经实验,可以安装成功; 安装方法:右键解压到当前文件夹,Copy解压的文件到eclipse安装目录dropins下,重启...

    Axis2--Webservice

    6. **MTOM与SwA优化**: Axis2支持MTOM(Message Transmission Optimization Mechanism)和SwA(SOAP with Attachments),这两种机制可以有效地处理大型二进制数据,提高传输效率。 7. **安全特性**: Axis2集成了...

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: -->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom...

    Spring集成axis2实现webservice所用到的包

    总结来说,Spring集成Axis2实现Web服务涉及到Spring的IoC容器、服务的创建和发布、以及客户端的调用等多个环节。了解并掌握这些知识点,对于开发高质量的Web服务应用至关重要。在实际项目中,务必确保所有必要的库...

    axis2-WebService-开发指南.docx

    Axis2 支持异步调用,可以实现异步调用 WebService,提高系统的性能和可扩展性。 8. Axis2 的 Module 模块: Axis2 提供了模块化的设计,可以将 WebService 分解成多个模块,实现了模块化的开发和部署。 9. Axis...

    axis-bin-1_4.zip

    标题中的"axis-bin-1_4.zip"是一个与 Axis1 相关的压缩包,Axis1 是一个开源的 Java 库,主要用于创建、部署和使用 Web Services。这个版本(1.4)是 Axis 的一个稳定版本,包含了 Axis 框架的可执行文件和其他必要...

    axis2-1.6.2.zip

    axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...

    axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard

    共四个文件,都是最先版的,希望可以帮助大家。axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard和axis2-1.6.1-bin和axis2-1.6.1-war

    axis-jaxrpc-1.4.jar

    axis-jaxrpc-1.4.jar jaxrpc.jar webservice java工具类jar包。

    axis2-1.4.1-bin.zip axis2-1.4.1-war.zip

    标题中的"axis2-1.4.1-bin.zip"和"axis2-1.4.1-war.zip"指的是Apache Axis2的两个不同版本的发行包,分别代表了Axis2的可执行二进制版本和Web应用程序版本。Apache Axis2是一个高度可扩展且功能强大的Web服务引擎,...

Global site tag (gtag.js) - Google Analytics