`
qll3609120
  • 浏览: 57119 次
社区版块
存档分类
最新评论

基于soap协议的cxf开发webservice

 
阅读更多

1、pom.xml添加cxf相关依赖,本人配置。

 

<dependency>
		  <groupId>org.apache.cxf</groupId>
		  <artifactId>cxf-rt-frontend-jaxrs</artifactId>
		  <version>2.7.5</version>
		  <type>pom</type>
		</dependency>
		<dependency>
		  <groupId>org.apache.cxf</groupId>
		  <artifactId>cxf-rt-frontend-jaxws</artifactId>
		  <version>2.7.5</version>
		</dependency>
		<dependency>
		  <groupId>org.apache.cxf</groupId>
		  <artifactId>cxf-rt-transports-http</artifactId>
		  <version>2.7.5</version>
		</dependency>
 

 

2、web.xml里面配置cxf servlet

      

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/webservice/*</url-pattern>
  </servlet-mapping>

3、 webservice配置文件

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns:jaxws="http://cxf.apache.org/jaxws"  
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"  
    xsi:schemaLocation=" http://www.springframework.org/schema/beans   
    http://www.springframework.org/schema/beans/spring-beans.xsd   
    http://cxf.apache.org/jaxws  
    http://cxf.apache.org/schemas/jaxws.xsd   
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-4.0.xsd   
    http://cxf.apache.org/jaxrs  
    http://cxf.apache.org/schemas/jaxrs.xsd">
    
    <import resource="classpath:META-INF/cxf/cxf.xml" />
 	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
  	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <jaxws:endpoint id="userWs" implementor="com.fpi.prd.test.service.Impl.UserTestServiceImpl"
    		address="/user" />
    
</beans>

 

4、定义webservice服务端接口,参照

 

@WebService
public interface UserTestService {
	
	@WebMethod
	public String getUsrById(String id);
}
   
public class UserTestServiceImpl implements UserTestService{

	@Override
	public String getUsrById(String id) {
		List<User> users = new ArrayList<User>();
		User user = new User("张三","10");
		JSONObject result = JSONObject.fromObject(user);
		users.add(user);
		User userb = new User("李四","20");
		users.add(userb);
		JSONArray jaonArray = JSONArray.fromObject(users);
		return jaonArray.toString();
	}

}
 

 

         4.1注意事项,数据传输可以对象,最好以JSon字符串传输,客户端反解析使用方便。

5、客户端调用,使用的是axis2的RPC方式,代码:

import java.util.List;

import javax.xml.namespace.QName;

import net.sf.json.JSONArray;

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

import com.fpi.prd.test.po.User;

/**
 * 模拟调用
 * @author 07845
 *
 */
public class ClientRevoke {
	//模拟客户端
	private RPCServiceClient rpcServiceClient;
	
	private Options options;
	
	private EndpointReference endpointReference;
	
	/**
	 * 初始化客户端
	 * @param endpoint
	 * @throws AxisFault
	 */
	public ClientRevoke(String endpoint)throws AxisFault{
		rpcServiceClient = new RPCServiceClient();
		options = rpcServiceClient.getOptions();		
		endpointReference = new EndpointReference(endpoint);
		options.setTo(endpointReference);
	}
	
	/**
	 * 模拟调用
	 * @param targetNamespace
	 * @param opName
	 * @param params
	 * @param opReturnType
	 * @return
	 */
	public Object[] getResult(String targetNamespace,String opName,
			Object[] params,Class<?>[] opReturnType){
		try{
			QName qName = new QName(targetNamespace,opName);
			return  rpcServiceClient.invokeBlocking(qName, params, opReturnType);
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}
	
	public static void main(String[] args)throws AxisFault,  
			ClassNotFoundException{
		String endpoint = "http://localhost:8080/demo/services/user";
		String targetNameSpace = "http://service.test.prd.fpi.com/";
		ClientRevoke clientRevoke = new ClientRevoke(endpoint);
		String opName = "getUsrById";
		
		Object[] parames = new Object[]{"1"};
		Class<?>[] opReturnType = new Class[] {String.class };
		Object[] response = clientRevoke.getResult(targetNameSpace, opName, parames,  
                opReturnType);
		JSONArray jsonObject = JSONArray.fromObject(response[0]);
		@SuppressWarnings("unchecked")
		List<User> users = (List<User>)JSONArray.toCollection(jsonObject, User.class);
		if(CollectionUtils.isNotEmpty(users)){
			for(User user:users){
				System.out.println(user.getAge()+"  "+user.getName());
			}
		}
	}
}

 

 

   

分享到:
评论

相关推荐

    基于Soap协议下CXF框架开发Webservice

    本篇文章将深入探讨如何使用CXF框架在SOAP协议下开发Web服务。 首先,我们需要理解SOAP的基本概念。SOAP是一种轻量级的消息协议,其主要目标是提供一种独立于语言、平台和网络协议的方式,使得分布式系统能够通过...

    第16讲-SOAP与CXF开发WebService.pptx

    【SOAP与CXF开发WebService】 本讲主要探讨了如何使用SOAP(Simple Object Access Protocol)和Apache CXF框架来开发Web服务。SOAP是一种基于XML的通信协议,它旨在解决互联网中分布式计算的互操作性问题,通过HTTP...

    Webservice笔记含使用cxf和jaxws两种方式开发webservice【源代码+笔记】

    Soap(jaxws开发webservice的传输协议)重点掌握 UDDI(了解) Webservice的使用场景分析(掌握) 学会jaxws基本开发方法(重点) Soap1.1和soap1.2区别: 跟踪soap协议 综合案例: 使用webservice传输xml...

    cxf 开发webservice客户端

    在IT行业中,CXF是一个广泛使用的开源框架,用于开发和实现Web服务,无论是SOAP(简单对象访问协议)还是RESTful风格的服务。本篇文章将详细探讨如何利用CXF框架开发一个Web服务客户端,以及如何进行测试。 一、CXF...

    基于cxf 的webService 接口开发及调用步骤文档

    ### 基于CXF的WebService接口开发及调用步骤详解 #### 一、概述 在当前企业级应用开发中,服务化与微服务架构逐渐成为主流趋势,而WebService作为一种跨语言、跨平台的服务交互方式,在众多场景下仍然发挥着重要...

    CXF打印SOAP报文,记录WebService日志

    ### CXF打印SOAP报文与记录WebService日志 在企业级应用开发中,尤其是涉及到服务端接口(如WebService)的设计与实现时,日志记录变得尤为重要。它不仅可以帮助开发者更好地理解系统运行状况、定位问题所在,还能...

    cxf开发webservice所用jar包

    这个标题“cxf开发webservice所用jar包”表明我们正在讨论一组CXF框架所需的JAR文件,这些文件对于利用CXF开发基于Web服务的应用程序至关重要。在描述中提到“cxf-2.4.1整合spring3.0所用jar包”,这暗示了我们使用...

    CXF开发webservice服务端

    Apache CXF 是一个高性能、易于使用的框架,它支持多种协议,如SOAP、XML/HTTP、REST等,使得开发基于Java的应用程序变得更加简单高效。本文将详细介绍如何使用Apache CXF框架来构建WebService服务器端,并通过实例...

    Android与服务器端数据交互(基于SOAP协议整合android webservice)

    本文将详细介绍如何基于SOAP协议整合Android与Web服务,以便在Android客户端调用服务器提供的功能。SOAP(Simple Object Access Protocol)是一种轻量级的、基于XML的协议,用于在Web上交换结构化和类型化的信息。 ...

    用cxf开发webservice

    此外,CXF不仅限于SOAP,还支持XML等其他消息格式,这使得它可以轻松地与其他非SOAP服务进行交互。 CXF的设计考虑了部署的灵活性,它可以轻松地整合到各种容器中,如基于Spring的容器、JBI容器、SCA容器、Servlet...

    使用CXF开发WebService

    在开发Web服务时,Apache CXF是一个非常强大的框架,它提供了与Spring的紧密集成,使得开发者可以方便地通过注解和Spring配置来暴露和消费Web服务。本篇内容将深入探讨如何使用CXF和Spring来创建和使用Web服务。 ...

    基于CXF实现WebService开发.pdf

    根据提供的文件内容,以下知识点是关于基于Apache CXF实现WebService开发的详细说明: Apache CXF是一个开源服务框架,它使得创建和开发WebService变得简单。CXF提供了完整的WebService功能,包括对JAX-WS的支持...

    基于Spring和CXF的webservice开发模板

    **基于Spring和CXF的Web服务开发模板** 在软件开发中,Web服务是一种常见的系统间通信方式,允许不同平台的应用程序之间交换数据。Spring和Apache CXF是两个强大的开源框架,它们结合使用可以轻松地创建、发布和...

    基于spring注解的cxf实现webservice

    可以使用CXF提供的WS-Client工具或者SOAP UI这样的工具来测试Web服务。 5. **使用依赖的jar包**: 提供的"webservie.cxf需要用的jar包"通常包含CXF的核心库、Spring的整合库以及相关的依赖。这些jar包确保了CXF和...

    spring+cxf 开发webservice

    4. **SOAP**:简单对象访问协议是一种基于XML的协议,用于交换结构化的和类型化的信息。在CXF中,SOAP用于构建传统的、基于WS-*的Web服务。 5. **RESTful API**: Representational State Transfer(表述性状态转移...

    使用cxf 开发webService 初体验

    1. **支持多种协议**:CXF不仅支持SOAP,还支持RESTful风格的Web Service。 2. **易于调试**:CXF提供了一套强大的工具,如CXF Console,可以帮助开发者调试和测试Web Service。 3. **强大的扩展性**:CXF可以通过...

    使用CXF和camel-cxf调用webservice

    Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的API和工具,使得开发者可以快速构建服务提供者和服务消费者。同时,CXF也集成了多种传输协议,如...

Global site tag (gtag.js) - Google Analytics