`

利用axis2实现WebService(Java)

阅读更多

一.使用axis2构建WebService服务器(POJO方式)。

 

1.下载所需的包:axis2的二进制包和axis2.war包。

下载地址:http://axis.apache.org/axis2/java/core/download.cgi#a1_5_2

 

2.将下载的axis2.war放到tomcat的webapps目录下,启动tomcat,此时webapps目录会自动解压出axis2目录,如下图:


此时在浏览器地址栏中输入: http://localhost:8080/axis2  ,如果一切正常会看到如下页面:


3.编写服务器端代码:

启动Eclipse,选择File---New---Project,找开新建向导,如下图:


4.选择Java Project,点击Next,打开新建项目窗口,为新建项目命名,这里命名为4thWebService,点击Finish完成项目的创建。

 

5.编写服务器端代码:

选择File---New---Class,新建的类必须是不含任何包名的类,命名为:MyWebService,如下图所示:


6.点击Finish完成创建,并编写该类的代码如下:

 

public class MyWebService {
    public String helloWebService(String name){
    	System.out.println("client args = "+name) ;
    	return name + " , this is webService . " ;
    }
}

 

 

7.将编译后的MyWebService.class文件放置到tomcat的webapps/axis2/WEB-INF/pojo(如果没有pojo文件夹,那么需要手动创建该文件夹)目录下。

 

8.在浏览器的地址栏中输入:http://localhost:8080/axis2/services/MyWebService?wsdl

如果创建成功,你会看到如下页面:


 

使用POJO方式搭建WebService的优缺点:

优点:简单

缺点:服务器端Java类不能含有包名。

 

 

 二.使用axis2构建WebService客户端.

1.需要把下载的二进制包解压,并把该文件夹下lib中所有的jar包都拷贝到自己的项目中(因为我也不知道具体哪个jar包有用,,所以保险起见,全导入,呵呵).

 

2.  编写客户端Java类代码如下:

package com.ysj;

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class TestAxis2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception  {
		// TODO Auto-generated method stub
        new TestAxis2().test();
	}
	
	public void test() throws Exception {
		// 服务器端WebService的WSDL连接串
		String serviceUrl = "http://172.16.225.170:8080/axis2/services/MyWebService?wsdl" ;
		RPCServiceClient serviceClient = null;
		String resultString = "";
		serviceClient = getServiceClient(serviceUrl);
		// 服务器端开放的方法名
		String wsFunction = "helloWebService";
		System.out.println(wsFunction);
		// 要传给服务器开放方法的参数.
		String jsonString = "你好" ;
		resultString = login(serviceUrl,serviceClient, jsonString, wsFunction);
		System.out.println("resultString=" + resultString);
	}
	
	public RPCServiceClient getServiceClient(String wsdlUrl) {
		RPCServiceClient serviceClient = null;
		try {
			serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
			EndpointReference targetEPR = new EndpointReference(wsdlUrl);
			options.setTo(targetEPR);
		} catch (AxisFault e) {
			e.printStackTrace();
		}
		return serviceClient;
	}

    public String login(String serviceUrl,RPCServiceClient serviceClient, String jsonString, String wsFunction) throws AxisFault {
		// 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值
		QName opLogin = new QName("http://ws.apache.org/axis2", wsFunction);
		// 参数,如果有多个,继续往后面增加即可,不用指定参数的名称
		Object[] inputArgs = new Object[] {  };
		if(jsonString!=null&&!"".equals(jsonString)){
			inputArgs = new Object[] { jsonString };
		}
		/*
		返回参数类型,这个和axis1有点区别
        invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;
         第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];
         第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。
         当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}
         如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,
         该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同
        */
		Class[] returnTypes = new Class[] { String.class };
		Object[] response = serviceClient.invokeBlocking(opLogin, inputArgs, returnTypes);
		String result = (String) response[0];
		// display results
		if (result == null) {
			System.out.println("result is null!");
		} else {
			System.out.println(wsFunction+"               : " + result);
		}
		return result;
	}

}

  

 输出结果为:

helloWebService
helloWebService               : 你好 , this is webService .
resultString=你好 , this is webService .

 

 

  • 大小: 157.6 KB
  • 大小: 167.8 KB
  • 大小: 57.1 KB
  • 大小: 98.3 KB
  • 大小: 300.9 KB
1
8
分享到:
评论
5 楼 zqb666kkk 2015-10-26  
这例子写的不错 兄弟有没有在这几基础上做加密的 经验?
4 楼 zqb666kkk 2015-10-26  
如果用maven的 同志 我这里贴下maven jar包的部署 代码
<!-- axis2 -->

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-aar-maven-plugin</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb-codegen</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-ant-plugin</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-clustering</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-codegen</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-integration</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-java2wsdl</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-java2wsdl-maven-plugin</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jaxbri</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jaxws</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jaxws-integration</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jibx</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-json</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-mar-maven-plugin</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-metadata</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-mtompolicy</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-repo-maven-plugin</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-resource-bundle</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-saaj</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-soapmonitor-servlet</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-spring</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-http</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-transport-local</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-wsdl2code-maven-plugin</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-xmlbeans</artifactId>
            <version>1.6.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>org.apache.axis2.osgi</artifactId>
            <version>1.6.3</version>
        </dependency>

        <!-- axis2 -->
3 楼 tyi_jioh 2014-03-26  
thank you very much!!!
2 楼 ysj5125094 2012-08-30  
墨守成规 写道
东软的啊,看来是同事

不好,我的package暴露了自己的身份,呵呵.
1 楼 墨守成规 2012-08-29  
东软的啊,看来是同事

相关推荐

    利用Axis2实现WebService开发与部署

    【标题】:“利用Axis2实现WebService开发与部署” 【描述】:“利用Axis2实现WebService开发与部署-3中方法进行开发” 【标签】:“WebService” 本文将详细讲解如何使用Apache Axis2框架来开发和部署Web ...

    axis2实现webservice

    ### Axis2实现WebService知识点 #### 一、Axis2简介 - **定义**:Apache Axis2是基于Java的一个开源的WebService框架,它支持多种标准(包括SOAP1.1、SOAP1.2、WS-Addressing等),并且具有轻量级、模块化的特点。...

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

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

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

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

    基于axis2实现的webservice简单实现(客户端+服务端)。

    【标题】中的“基于axis2实现的webservice简单实现(客户端+服务端)”表明了本文将探讨如何使用Apache Axis2框架来创建和消费Web服务。Apache Axis2是Apache软件基金会开发的一个Web服务引擎,它提供了高效且灵活的...

    Java-tomcat-axis2开发webservice返回json数据

    总结起来,这个项目涉及使用Java和Tomcat搭建Web服务环境,利用Axis2框架构建服务,并通过集成Jettison库处理JSON数据的生成和解析。这样的技术栈在现代Web服务开发中非常常见,对于构建可交互、高效的API非常重要。

    AXIS2实现WebService的jar包

    - 利用AXIS2生成的客户端存根类,简化调用过程。 7. **AXIS2与JAR文件** 在提供的压缩包文件中,"lib"包包含的是AXIS2运行时所需的库文件,包括AXIS2核心库、XML解析器、SOAP引擎等相关JAR文件。这些JAR文件是...

    axis2webservice接口例子

    描述中的“一个基于axis的webservice接口例子”进一步明确了这是一个基于Apache Axis2的Web服务接口实现。Axis2是Apache SOAP(Simple Object Access Protocol)项目的继任者,它不仅支持SOAP,还支持RESTful风格的...

    axis2+spring webservice

    描述中提到的“简单例子:axis2整合spring发布webservice”,意味着我们将学习如何将这两个框架结合,以便通过Spring来管理和控制Web服务的生命周期,同时利用Axis2的Web服务处理能力。此外,“以及session的管理”...

    axis2实现webservice请求

    总的来说,Axis2 是一个强大的工具,为开发者提供了在 Java 平台上实现 WebService 请求的便利。理解其工作原理和使用方法是提升你在 IT 领域尤其是企业级应用开发中的技能的重要一步。通过实践和探索提供的资源包,...

    Axis2(WebService)经典教程

    - **企业级集成**:利用WebService技术,Axis2可以整合多种技术栈和平台,提高系统的可扩展性和可维护性。 #### 三、Axis2核心功能详解 ##### 1. POJO实现0配置的WebService - **概念**:通过简单的Java类(POJO...

    Axis2搭建WebService服务端demo

    在本文中,我们将深入探讨如何使用Spring、Axis2和Maven构建一个基于Java的Web服务(WebService)服务端示例。这些技术的结合为开发人员提供了高效、灵活且可扩展的解决方案来创建和消费Web服务。 首先,让我们了解...

    Java+Axis2调用Web Services 网络接口

    本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的软件系统,通常基于WSDL(Web Services Description Language)定义接口,SOAP...

    axis2开发webservice

    在描述 "在 Eclipse 上使用 Axis2 编辑 WebService 和发布 WebService" 中,我们可以理解到,开发者将通过 Eclipse 这个流行的 Java IDE 来实现 WebService 的开发工作。Eclipse 提供了 Axis2 插件,使得开发者可以...

    Axis实现webservice完整实例

    总结,利用 Axis 实现 WebService 能够快速构建跨平台、跨语言的通信桥梁。通过服务端和客户端的代码实例,初学者可以深入理解 WebService 的工作原理和 Axis 的使用方法。在这个实例中,提供的代码已经过测试,可以...

    利用Axis编写简单的WebService

    【标题】:“利用Axis编写简单的WebService” 在Java世界中,创建和使用Web服务是一个常见的任务,而Axis是一个流行的开源工具,用于实现基于SOAP(简单对象访问协议)的Web服务。本篇文章将指导你如何利用Axis来...

    Axis2教程和java调用webservice的各种方法总结

    2. "利用Java编写简单的WebService实例 - 少说些漂亮话,多做些日常平凡的事情 - ITeye技术网站.mht":此文件可能会提供一个实际的Java Web服务开发示例,指导读者如何从零开始创建一个简单的Web服务,强调实践操作...

    axis2_WebService_开发指南

    为了更好地管理和配置WebService,Axis2允许开发者利用Spring框架的JavaBean来发布WebService,这样做可以使得服务的配置更加灵活和模块化。 最后,Axis2还支持使用SoapMonitar这样的工具来监视WebService的请求和...

    用axis2搭建webservice

    Axis2是Apache软件基金会开发的一个高效的Web服务框架,它基于Java语言,提供了强大的Web服务支持。本教程将详细介绍如何使用Axis2来搭建Web服务,并探讨其与Spring框架的集成。 【描述】:虽然有多种Web服务技术,...

Global site tag (gtag.js) - Google Analytics