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()); } } } }
相关推荐
本篇文章将深入探讨如何使用CXF框架在SOAP协议下开发Web服务。 首先,我们需要理解SOAP的基本概念。SOAP是一种轻量级的消息协议,其主要目标是提供一种独立于语言、平台和网络协议的方式,使得分布式系统能够通过...
【SOAP与CXF开发WebService】 本讲主要探讨了如何使用SOAP(Simple Object Access Protocol)和Apache CXF框架来开发Web服务。SOAP是一种基于XML的通信协议,它旨在解决互联网中分布式计算的互操作性问题,通过HTTP...
Soap(jaxws开发webservice的传输协议)重点掌握 UDDI(了解) Webservice的使用场景分析(掌握) 学会jaxws基本开发方法(重点) Soap1.1和soap1.2区别: 跟踪soap协议 综合案例: 使用webservice传输xml...
在IT行业中,CXF是一个广泛使用的开源框架,用于开发和实现Web服务,无论是SOAP(简单对象访问协议)还是RESTful风格的服务。本篇文章将详细探讨如何利用CXF框架开发一个Web服务客户端,以及如何进行测试。 一、CXF...
### 基于CXF的WebService接口开发及调用步骤详解 #### 一、概述 在当前企业级应用开发中,服务化与微服务架构逐渐成为主流趋势,而WebService作为一种跨语言、跨平台的服务交互方式,在众多场景下仍然发挥着重要...
### CXF打印SOAP报文与记录WebService日志 在企业级应用开发中,尤其是涉及到服务端接口(如WebService)的设计与实现时,日志记录变得尤为重要。它不仅可以帮助开发者更好地理解系统运行状况、定位问题所在,还能...
这个标题“cxf开发webservice所用jar包”表明我们正在讨论一组CXF框架所需的JAR文件,这些文件对于利用CXF开发基于Web服务的应用程序至关重要。在描述中提到“cxf-2.4.1整合spring3.0所用jar包”,这暗示了我们使用...
Apache CXF 是一个高性能、易于使用的框架,它支持多种协议,如SOAP、XML/HTTP、REST等,使得开发基于Java的应用程序变得更加简单高效。本文将详细介绍如何使用Apache CXF框架来构建WebService服务器端,并通过实例...
本文将详细介绍如何基于SOAP协议整合Android与Web服务,以便在Android客户端调用服务器提供的功能。SOAP(Simple Object Access Protocol)是一种轻量级的、基于XML的协议,用于在Web上交换结构化和类型化的信息。 ...
此外,CXF不仅限于SOAP,还支持XML等其他消息格式,这使得它可以轻松地与其他非SOAP服务进行交互。 CXF的设计考虑了部署的灵活性,它可以轻松地整合到各种容器中,如基于Spring的容器、JBI容器、SCA容器、Servlet...
在开发Web服务时,Apache CXF是一个非常强大的框架,它提供了与Spring的紧密集成,使得开发者可以方便地通过注解和Spring配置来暴露和消费Web服务。本篇内容将深入探讨如何使用CXF和Spring来创建和使用Web服务。 ...
根据提供的文件内容,以下知识点是关于基于Apache CXF实现WebService开发的详细说明: Apache CXF是一个开源服务框架,它使得创建和开发WebService变得简单。CXF提供了完整的WebService功能,包括对JAX-WS的支持...
**基于Spring和CXF的Web服务开发模板** 在软件开发中,Web服务是一种常见的系统间通信方式,允许不同平台的应用程序之间交换数据。Spring和Apache CXF是两个强大的开源框架,它们结合使用可以轻松地创建、发布和...
可以使用CXF提供的WS-Client工具或者SOAP UI这样的工具来测试Web服务。 5. **使用依赖的jar包**: 提供的"webservie.cxf需要用的jar包"通常包含CXF的核心库、Spring的整合库以及相关的依赖。这些jar包确保了CXF和...
4. **SOAP**:简单对象访问协议是一种基于XML的协议,用于交换结构化的和类型化的信息。在CXF中,SOAP用于构建传统的、基于WS-*的Web服务。 5. **RESTful API**: Representational State Transfer(表述性状态转移...
1. **支持多种协议**:CXF不仅支持SOAP,还支持RESTful风格的Web Service。 2. **易于调试**:CXF提供了一套强大的工具,如CXF Console,可以帮助开发者调试和测试Web Service。 3. **强大的扩展性**:CXF可以通过...
Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的API和工具,使得开发者可以快速构建服务提供者和服务消费者。同时,CXF也集成了多种传输协议,如...