`

利用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,客户端必须的jar包

    当利用axis2组建javawebservice时,客户端调用webservice必须引用到的jar文件

    利用AXIS调用webservice所需JAR包

    利用AXIS,通过wsdl的url直接调用webservice接口时所需要的jar包,经测试可直接使用

    axis2 webservice项目源码

    利用axis2开发的webservice,所需jar包在我的资源中找(libs.rar)。我已经止传了,这是一个示例源码。大家下载后在eclipse中直接导入到工程就可以了,编码用gbk吧,本项目可以部署在纯java工程项目中,可以不用web...

    利用Axis框架开发Webservice需要的开发包

    包括Axis开发Webservice所需要的四个开发包:axis-bin-1_4.zip、jaf-1_1-fr.zip、javamail-1_4.zip、xml-security-bin-1_3_0.zip;另有开发环境的搭建和入门实例学习。

    利用axis一步一步开发webservice

    利用axis一步一步开发webservice,内含详细截图以及整个项目代码。

    php调用Java axis2发布的webservice

    二、利用axis2发布服务 2.1 用java建一个简单的工程sayHi,在里面编写一个简单的服务类sayHi,里面有一个函数sayHello. package Hi; publicclass sayHi { public String sayHello(String user,String weather) { ...

    详解axis调用webservice实例

    里面包含用到的axis的jar包 和一个java文件,下载后,将文件放在工程下,添加jar包即可运行,用的开源的webservice服务,里面重要代码都做了注释。

    java采用axis调用.net写的WebService

    java采用axis调用.net写的WebService,WebService的参数有传人和传出,传出的参数为ref,java端ParameterMode.OUT,传人的为ParameterMode.IN,WebService返回值为String,java利用Map取传出参数,对Map进行遍历取得...

    axis2 webservice入门手册(JS,Java,PHP调用实例源码)www.sietoo.com出品

    最近接触到一个银行接口的案子,临时需要用到axis2 webservice。自己现学现总结的一些东西,留给新手。少走弯路。 Axis2简介 ①采用名为 AXIOM(AXIs Object Model)的新核心 XML 处理模型,利用新的XML解析器提供...

    axis+webservice教程.doc

    利用AXIS开发Webservice(一) —— 如何发布自己的webservice 先介绍下本人开发环境吧。 JDK 1.4.2 + Myeclipse 6.0(实在经不起诱惑,尝尝鲜) + Tomcat 5.0.28 + AXIS 1.4。 AXIS 1.4包可以在...

    eclipse&webservice开发实例.doc

    利用Java编写简单的WebService实例 Axis2与Eclipse整合开发Web Service

    webservice调用,传参代码样例

    各种利用webservice技术代码样例,用axis框架。

    xml执行java源码-Axis-1.4-RCE-Poc:Axis&lt;=1.4远程命令执行(RCE)POC

    执行java源码 Axis &lt;=1.4 远程命令执行(RCE) POC 环境准备 首先下载Axis1.4 本仓库有一个打包好的axis直接解压到tomcat webapps下即可 ,web-inf/web.xml 去掉AdminServlet注释 然后,server-config.wsdd文件...

    wsdl文件生成java webservice 工具(附带生成后调用方法)

    利用axis jar包 根据wsdl文件生成java webservice 工具 (附带生成后调用方法和详细说明) 及其适合工作着与初学者调试和学习,已经通过测试完全可用

    java编写webservice实例

    学习教程实例+源代码 利用Java编写简单的WebService实例,其中带有源代码及lib包。

    webservice实例-简单图书馆

    利用Myeclipse+axis2+mysql实现的一个简单的webservice,这是一个简单的图书管理程序,有添加图书,删除图书和查询图书,还有简单的管理权限控制,是最为基础的一个webservice实例。

    java SOAPHEADER的web service

    c# JSON返回格式的WEB SERVICE//...wsdl访问,然后利用axis生成类: java -classpath “.;commons-logging.jar;axis.jar;commons-discovery.jar;jaxrpc.jar;wsdl4j.jar;saaj.jar;jaxrpc.jar;mail.jar” org.apac

    利用xfile构建webservice(服务端以及客户端)

    2、创建服务接口和实现.........................................................................................................7 3、xfire 服务配置..........................................................

    JstlAndStandard.zip

    activation.jar是一款java中项目中的利用axis部署WebService服务必须用的一个JAR包

    activation.jar

    activation.jar是一款java中项目中的利用axis部署WebService服务必须用的一个JAR包,直接导入项目即可实现部署WebService的功能,可以让程序猿们更节约时间。

Global site tag (gtag.js) - Google Analytics