webService总结(四)——使用axis2发布和调用webService

准备工作

Axis2 官网 http://axis.apache.org/  下载axis2相关资料

其中 axis2-1.6.2-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.6.2-war.zip文件用于将WebService发布到Web容器中。最后两个是axis2在eclipse中的插件。

大概说说这几个文件如何使用。

1、解压axis2-1.6.2-bin.zip到任意目录。然后在eclipse中按下图配置。

2、将axis2-1.6.2-war.zip文件解压到任意目录,将目录中的axis2.war文件放到<Tomcat安装目录>\webapps目录中,并启动Tomcat,在浏览器地址栏中输入如下的URL:
http://localhost:8080/axis2/,如看到axis2的主页面则安装成功。如下图:

3、eclipse中安装那两个axis2 的插件,具体安装步骤这里就不说了,安装后eclipse中 file——new——others,如果显示如下画面,说明安装成功。

使用axis2发布webService

eclipse中编写一个java  POJO类——HelloWorldServerImp,代码如下:

package com.test.server;

public class HelloWorldServerImp {

	public String sayHello(String username) {
		return username+" : HelloWorld";
	}

}

我能告诉你编码工作已经全部结束了吗?

看看发布过程:

File ——》new ——》Axis2  Service archive

这个直接略过

输出位置直接选到Tomcat中如下目录,finish即可自动发布。

这时你会看到对应的目录下多了如下文件

访问网址:http://localhost:8080/axis2/services/listServices  即可看到我们发布的webService。

至此,发布成功。

客户端调用webService

使用axis2实现,代码如下

WsClient代码:

package com.test.server;

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 WsClient {
	private RPCServiceClient serviceClient;
	private Options options;
	private EndpointReference targetEPR;

	public WsClient(String endpoint) throws AxisFault {
		serviceClient = new RPCServiceClient();
		options = serviceClient.getOptions();
		targetEPR = new EndpointReference(endpoint);
		options.setTo(targetEPR);
	}

	public Object[] invokeOp(String targetNamespace, String opName,
			Object[] opArgs, Class<?>[] opReturnType) throws AxisFault,
			ClassNotFoundException {
		// 设定操作的名称
		QName opQName = new QName(targetNamespace, opName);

		// 操作需要传入的参数已经在参数中给定,这里直接传入方法中调用
		return serviceClient.invokeBlocking(opQName, opArgs, opReturnType);
	}

	/**
	 * @param args
	 * @throws AxisFault
	 * @throws ClassNotFoundException
	 */
	public static void main(String[] args) throws AxisFault,
			ClassNotFoundException {
		//这个是wsdl地址
		final String endPointReference = "http://localhost:8080/axis2/services/HelloWorldServer";
		final String targetNamespace = "http://server.test.com";
		WsClient client = new WsClient(endPointReference);

		String opName = "sayHello";
		Object[] opArgs = new Object[] { "haitao" };
		Class<?>[] opReturnType = new Class[] { String[].class };

		Object[] response = client.invokeOp(targetNamespace, opName, opArgs,
				opReturnType);
		System.out.println(((String[]) response[0])[0]);
	}
}

当然,也可以使用cxf调用,代码跟前几篇博客的客户端一样:

package com.test.client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class HelloWorldClient {
	public static void main(String[] args) {
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:9000/HelloService?wsdl");
        Object[] objects;
		try {
			objects = client.invoke("sayHello", "haitao");
			//输出调用结果
			System.out.println(objects[0].toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

至此,使用axis2发布和调用webService结束。没接触axis2之前,感觉这东西挺神秘的,等你真正实现了,你会发现,它也不过如此。不过,axis2的东西远非这点,继续学习吧。

时间: 2024-10-25 20:10:10

webService总结(四)——使用axis2发布和调用webService的相关文章

java中使用axis发布和调用webService

工作中需要调用webService服务,这里记录一下如何在java中发布和调用webService. 需要的jar包: 发布webService: package com.xzh.webservice; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class MyWebService { public String hello(S

使用CXF发布和调用webservice之HelloWorld入门

依赖的JAR     cxf-2.2.10.jar     jetty-6.1.21.jar     jetty-util-6.1.21.jar     servlet-2_5-api.jar     wsdl4j-1.6.2.jar     XmlSchema-1.4.5.jar 创建一个普通的Java工程即可 创建webservice接口 package com.cxf.interfaces; import javax.jws.WebParam; import javax.jws.WebSe

webService总结(一)——使用CXF发布和调用webService(不使用Spring)

CXF和Axis2是两个比较流行的webService框架,接下来我会写几篇博客简单介绍如何使用这两种框架.首先,先简单介绍一下CXF的使用. CXF发布webService有多种方法,这里我介绍三种: 1.不使用Spring,CXF自动发布webService 2.不使用Spring,CXF手动发布webService 3.使用Spring + CXF发布webService 这篇博客以实例介绍第一种方法--不使用Spring,CXF自动发布webService. 服务端: 目录结构如下: I

spring boot整合cxf发布和调用webservice

一.前言 说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例如银行.航空公司的机票查询接口等.本博客主要讲解得是spring boot整合cxf发布webservice服务和spring boot整合cxf客户端调用webservice服务本案例使用maven方式二.编码核心文件清单1.pom.xml <?xml version="1.0"

[PHP]php发布和调用Webservice接口的案例

分两步走:1.服务端发布接口;2.客户端调用方法 1.服务端发布接口: 需要nusoap工具,下载地址:http://sourceforge.net/projects/nusoap/ 下载完和要发布接口的php文件放在同一目录下. 服务端发布接口soapserver.php例子: <?phprequire_once('./lib/nusoap.php');$soap = new soap_server; $soap->soap_defencoding = 'UTF-8';$soap->d

【Java EE 学习第80天】【调用WebService服务的四种方式】

不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jdk命令wsimport生成调用源代码 package com.kdyzm.ws; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class MyWsServer { public Strin

mule发布调用webservice

mule发布webservice 使用mule esb消息总线发布和调用webservice都非常精简,mule包装了所有操作,你只需要拖控件配置就可以,下面讲解mule发布: 1.下面是flow,http监听接口,CXF发布webservice,java用来引用webservice的方法. 2.xml代码如下:     <flow name="webService">      <http:listener config-ref="HTTP_Listene

C#调用WebService

1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册. XML:(Extensible Markup Language)扩展型可标记语言.面向短期的临时数据处理.面向万维网络,是Soap的基础. Soap:(Simple Object A

C#创建和调用WebService详细教程

1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册. XML:(Extensible Markup Language)扩展型可标记语言.面向短期的临时数据处理.面向万维网络,是Soap的基础. Soap:(Simple Object A