`

(1)使用Axis2方式发布webService实例说明

阅读更多

1、简单的pojo方式:

  不需要写配置文件,直接把class文件拷贝到axis2的WEB-INF目录下的poji文件夹下即可。但其局限性表现在,实现类不能有包声明,这在实际开发过程中使用较少,这里不做说明。

2、打jar包的方式:

  将接口实现放到axis2中。首先下载所需要的jar包,解压axis2-1.5.4-war.zip,将里面的axis2.war直接拷贝到tomcat里webapps中,启动tomcat后,会自动生成axis2文件夹。在浏览器中访问http://127.0.0.1:8080/axis2/,能看到以下界面说明axis2启动成功。

  点击Services链接,可以看到available services只有Version,这个是Axis2自带的接口。

  然后开始新建一个我们自己的webService。在myEclipse中新建项目:webServiceTest。

  新建类com.sdjxd.SayHelloImpl.java 

package com.sdjxd;
/**
 * @description 简单接口方法实现
 * @author lizhen
 */
public class SayHelloImpl {
	public void sayHello() {
		System.out.println("Hello WebService");
	}
	public void sayHelloToSomeOne(String name) {
		System.out.println("Hello " + name);
	} 
}
  在项目的src目录下建立文件夹META-INF,在META-INF中创建services.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- webService发布名称,命名空间 -->
<service name="myService" targetNamespace="http://ws.apache.org/ax2">
<!-- 更改schemaNamespace,也可使用默认值,客户端调用时会使用 -->
<schema schemaNamespace="http://sdjxd.com.cn"/>
<!-- webService描述 -->
<description>Web Service实例一</description>
<!-- webService的实现类 -->
<parameter name="ServiceClass">com.sdjxd.SayHelloImpl</parameter>
<messageReceivers>
<!-- 配置消息接收器,Axis2会自动选择 -->
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
	class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
	class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
</messageReceivers>
</service>
  在控制台上找到当前项目的src目录。
  输入打jar包的命令:jar cvf webServiceTest.aar . 最后面是空格+小数点。

  执行完成后,目录下会出现webServiceTest.aar文件。

  然后将webServiceTest.aar文件拷贝到D:\tomcat-6.0\webapps\axis2\WEB-INF\services中

  重新启动tomcat,访问http://127.0.0.1:8080/axis2/,然后再点击Services,可以看到此时有两个Available Services,其中myService就是我们刚才定义的。

  点击myService,可以看到生成的wsdl配置文件:其中命名空间是我们自定义的那个。

  至此,webService的服务器端开发就完成了,由于客户端的访问方式都是相同的,这个放到最后。

3、不打jar包的方式:(重点)

  将axis2整合到接口所在系统中。同样如第二种方法,编写一个名为webServiceAxis2的项目。实现com.sdjxd.SayHelloImpl。

  由于要将Axis2添加到项目中,所以需要在web.xml中添加如下配置:

<!--Axis2 config start-->
<servlet>
    <servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping> 
 	<servlet-name>AxisServlet</servlet-name>  
 	<url-pattern>/services/*</url-pattern>  
</servlet-mapping>
<!--Axis2  end-->
  然后找到部署在tomcat中的axis2目录下的WEB-INF里的一下三个文件夹conf、modules、services。将他们拷贝到项目webServiceAxis2中的WEB-INF目录下。
  将axis2中lib下的jar包全部拷贝到webServiceAxis2里的lib中。然后再services目录下建立目录:webService/META-INF,在这个目录下建立services.xml配置文件。配置方法同上。目录webService/META-INF中webService名字是任意的,这里取webService。

  最后,将下载的项目中的axis2-web文件夹拷贝到webroot下,这个文件夹控制显示axis2的服务器列表等信息。
  完成后,重启tomcat,访问http://127.0.0.1:8080/ webServiceAxis2/services/listServices可以看到接口列表。访问地址http://127.0.0.1:8080/ webServiceAxis2/services/myService?wsdl可以看到wsdl配置。

4、客户端访问webService的方法

  两个方法分别调用webService中的两个接口方法。

package com.sdjxd;
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 ComeToSayHi {
	/**
	 * @method comeToSay
	 * @description 调用接口方法sayHello(),接口方法无参,无返回值
	 * @author lizhen
	 */
	public static String comeToSay() {
		//接口访问地址,最后要有“?wsdl”
		String url = "http://127.0.0.1:8080/webServiceAxis2/services/myService?wsdl";
		//访问接口方法
		String method = "sayHello";
		RPCServiceClient serviceClient = null;
		try {
			serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
			EndpointReference targetEPR = new EndpointReference(url);
			options.setTo(targetEPR);
			//连接服务器段的超时时间
			options.setTimeOutInMilliSeconds(100000L);
			//不加的话容易出现异常。
			options.setAction(method);
			//初始化参数,无参时,不能使用null,必须使用new Object[] {}。
			//有参数,使用new Object[] {param}
			//有多个参数,不用指定参数的名称new Object[] {param1,param2,...}
			Object[] opAddEntryArgs = (Object[]) null;
			opAddEntryArgs = new Object[] {};
//在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值
			QName opAddEntry = new QName("http://sdjxd.com.cn", method);
//要调用的方法没有返回值,使用方法invokeRobust(QName, new Object[]{..});
//第一个参数的类型是QName对象,表示要调用的方法名;
//第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];
//如果有返回值则要使用invokeBlocking(QName, new Object[]{..},new Class[]{..})
//第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。
			serviceClient.invokeRobust(opAddEntry,opAddEntryArgs);
			//清空缓存,否则容易出错。
			serviceClient.cleanupTransport();
			return "Hi";
		} catch (AxisFault e) {
			e.printStackTrace();
		}
		return "Hi";
	}
	/**
	 * @method comeToSayHelloToSomeone
	 * @description 调用接口方法sayHelloToSomeone(),接口方法有参,有返回值
	 * @author lizhen
	 */
	public static String comeToSayHelloToSomeone() {
		String url = "http://127.0.0.1:8080/webServiceAxis2/services/myService?wsdl";
		String method = "sayHelloToSomeone";
		String str = "li";
		String result = "";
		RPCServiceClient serviceClient;
		try {
			serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
			EndpointReference targetEPR = new EndpointReference(url);
             options.setTimeOutInMilliSeconds(100000L);
			options.setAction(method);
			options.setTo(targetEPR);
			QName opAddEntry = new QName("http://sdjxd.com.cn", method);
			Object[] opAddEntryArgs = new Object[] {str};
			Class[] classes = new Class[] { String.class };
			//webService方法有参数,使用invokeBlocking方法调用
			result = (String) serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
		} catch (AxisFault e) {
			e.printStackTrace();
		}
		return result;
	}
	public static void main(String[] args) {
		String a = comeToSay();
		String b = comeToSayHelloToSomeone();
		System.out.print(a + "-----" + b);
	}
}

原文地址:(1)使用Axis2方式发布webService实例说明。转载请注明出处,谢谢!

  • 大小: 63.9 KB
  • 大小: 26.9 KB
  • 大小: 13.6 KB
  • 大小: 34 KB
  • 大小: 20.4 KB
  • 大小: 70.3 KB
  • 大小: 18.4 KB
  • 大小: 35.2 KB
  • 大小: 29.4 KB
  • 大小: 9.8 KB
  • 大小: 10.6 KB
  • 大小: 47.3 KB
分享到:
评论

相关推荐

    webService—Axis实例webService—Axis实例webService—Axis实例

    webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例webService—Axis实例

    axis2发布webservice各种方式实例

    本篇文章将深入探讨如何使用Axis2发布Web服务,并特别关注其中的Spring发布方式。 首先,让我们了解基本的Axis2发布Web服务的流程。Axis2提供了两种主要的发布方法:通过XML配置和通过编程方式。XML配置方式通常...

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

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

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

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

    axis2webservice接口例子

    标题中的“axis2webservice接口例子”指的是使用Apache Axis2框架创建的一个Web服务接口实例。Apache Axis2是Java平台上的一款强大的Web服务开发工具,它提供了高效、灵活且可扩展的环境来构建和部署Web服务。这个...

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

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

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    1. 在客户端项目中,使用AXIS2的Stub类(由WSDL生成)来实例化服务代理。 2. 通过代理对象调用服务方法,例如`HelloWorldServiceStub stub = new HelloWorldServiceStub(); stub.sayHello();` 以上就是使用Eclipse...

    axis2发布webservice和调用实例

    本文将深入探讨如何使用Axis2发布Web服务以及进行客户端调用,这包括新手教程、详细的说明文档,以及实际操作的实例。 1. **Axis2简介** - Axis2是Apache软件基金会的项目,它是用于构建和部署Web服务的平台,支持...

    详解axis调用webservice实例

    标题中的“详解axis调用webservice实例”表明我们将探讨如何使用Apache Axis库来调用Web服务。Apache Axis是一个开源工具,它允许Java开发者创建、部署和使用Web服务。在这个实例中,我们会有机会看到实际的Java代码...

    axis2技术webservice实例

    使用axis2技术编写的webservice接口实例,直接放在应用服务器下便可使 用http://localhost:xxxx/axis2/service/来访问WSDL 业务源代码位于\WEB-INF\classes\HelloWorld.java

    myeclipse8.5使用axis2插件开发webservice服务并调用

    ### 使用MyEclipse 8.5与Axis2插件开发WebService服务及调用详解 #### 一、前言 在Web开发中,WebService作为一种重要的分布式系统实现方式,被广泛应用于不同平台之间的通信。本文将详细介绍如何利用MyEclipse ...

    axis2 webservice 实例

    标题中的“Axis2 WebService 实例”指的是使用Apache Axis2框架创建和使用的Web服务示例。Apache Axis2是Java平台上一个强大的Web服务引擎,它允许开发者轻松地构建和部署Web服务。这个实例可能是为了帮助开发者理解...

    eclipse+axis2=webservice实例-亲测

    eclipse+axis2学习webservice实例,亲测!

    WebService之Axis2实例

    WebService之Axis2实例是Web服务开发中的一个重要环节,它基于SOAP协议,允许不同平台和语言间的应用程序进行通信。本文将详细介绍Axis2实例的创建、配置和运行,以及如何利用Eclipse IDE、JDK 1.7和Tomcat 7.0进行...

    Axis实现webservice完整实例

    本实例将详细介绍如何使用 Axis 实现 WebService 的服务端和客户端。 ### 1. WebService 基础 WebService 是基于开放标准(如 WSDL、SOAP 和 UDDI)的分布式计算模型,使得不同系统之间的数据交换变得简单。WSDL...

    基于Axis2的WebService的实例demo(包含jar包)

    **基于Axis2的WebService实例详解** 在Web服务领域, Axis2是Apache软件基金会开发的一个用于构建和部署Web服务的开放源代码平台。它提供了一种高效、灵活且可扩展的框架,使得开发者能够轻松地创建和消费Web服务。...

    WebService大讲堂之Axis2,多个实例

    本系列教程将涵盖从基础到高级的Axis2使用,着重于如何在无需配置文件的情况下,使用Axis2开发和发布WebService。 首先,Axis2的下载和安装是使用这一技术的首要步骤。Axis2的最新版本可以通过官方网址下载,分别...

    axis 发布webservice的步骤

    为了更好地理解和实践这些步骤,可以参考给定的文档“Eclipse开发Axis_WebService实例总结_20100430.doc”。这个文档通常会包含详细的步骤、截图以及可能遇到的问题和解决方案,对于初学者非常有帮助。 总结,发布...

    axis调用webservice实例,包含jar包

    标题中的“axis调用webservice实例”涉及到的是在Java开发中使用Apache Axis库来调用Web服务的过程。Apache Axis是一个开放源代码的SOAP栈,它允许开发者创建和部署Web服务,同时也提供了客户端工具来调用这些服务。...

Global site tag (gtag.js) - Google Analytics