`
dengry
  • 浏览: 7206 次
  • 来自: ...
社区版块
存档分类
最新评论

webservice之CXF初探

阅读更多
近期要用到webservice,以前用过axis2,,现研究下CXF,本文基于maven+spring+struts2+cxf,并且参考了cxf官方demo,下面就开始我们的工作。
1.首先加入cxf的依赖:
<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>3.0.2</version>
</dependency>

cxf3.0.2本身是依赖与spring3.2.6,项目中我的spring是4.1.1,cxf会直接使用已经引入的版本,spring3不再引入
2.在web.xml中配置cxf的servlet
<!-- cxf -->
<servlet>
		<description>Apache CXF Endpoint</description>
		<servlet-name>cxf</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>cxf</servlet-name>
		<url-pattern>/services/*</url-pattern>
</servlet-mapping>

由于前端框架使用的是struts2,url配置是/*,我的解决方案是继承struts2的核心过滤器StrutsPrepareAndExecuteFilter,重写其doFilter方法
public class StrutsFilter extends StrutsPrepareAndExecuteFilter {

	@Override
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		String url = ((HttpServletRequest) req).getRequestURI();
		//url中不含有/services则使用struts2默认过滤器
		if (url.indexOf("services") < 0) { 
			super.doFilter(req, res, chain);
		} else {
			//进入cxf的servlet
			chain.doFilter(req, res);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		super.init(arg0);
	}

}

然后在web.xml中配置上这个filter即可
3.服务端要暴露的方法,这里借用了cxf官网例子:
package demo.spring.service;

import javax.jws.WebService;

@WebService
public interface HelloWorld {
    String sayHi(String text);
}

其实现为:
package demo.spring.service;

import javax.jws.WebService;

@WebService(endpointInterface = "demo.spring.service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {

    public String sayHi(String text) {
        System.out.println("sayHi called");
        return "Hello " + text;
    }
}
// END SNIPPET: service

4.在spring配置文件中beans.xml中注册该服务
<jaxws:endpoint id="helloWorld" implementor="demo.spring.service.HelloWorldImpl"
		address="/HelloWorld" />
,由于这里用到jaxws命名空间,加上对应命名空间:
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	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">

至此,服务器发布方法结束,在浏览器中测试:
[img]


[/img]
5.下面我们来编写客户端,客户端只需要在配置文件中做如下配置即可:
<!-- 客户端获取webservice服务 -->
<bean id="client" class="demo.spring.service.HelloWorld"
		factory-bean="clientFactory" factory-method="create" />
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
	<property name="serviceClass" value="demo.spring.service.HelloWorld" />
	<property name="address" value="http://localhost:8088/cxfTest/services/HelloWorld" />
</bean>

写一个测试:
@Test
public void client() {
	ApplicationContext context = new ClassPathXmlApplicationContext(
				"beans.xml");
	HelloWorld client = (HelloWorld) context.getBean("client");
	String response = client.sayHi("Joe");
	System.out.println("Response: " + response);
}
,可顺利在控制台看到输出:
[img]

[/img]
总结:采用cxf+spring的方式开发webservice,感觉非常的简单,也有疑惑,cxf官网的例子中有一个这个配置:
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
,并且我参考其他童鞋也有该配置,我不用它也没有问题,不知何故?
  • 大小: 51.7 KB
  • 大小: 9.5 KB
分享到:
评论

相关推荐

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...

    webService(基于cxf)的完整例子

    例如,可以使用`@WebService`注解标记一个Java类为Web服务接口,并使用`@Path`注解来定义RESTful服务的URL路径。 4. **CXF服务部署**:CXF提供多种部署方式,包括独立服务器、Tomcat等应用服务器,以及Spring容器。...

    webservice-cxf-spring-jar.zip

    【标题】"webservice-cxf-spring-jar.zip" 是一个包含了使用Apache CXF与Spring框架集成开发Web服务的Java库集合。这个压缩包提供了一整套必要的JAR文件,以便于开发者在他们的项目中快速搭建和运行基于CXF的Web服务...

    WebService_CXF_x509

    【WebService_CXF_x509】是一个关于使用Apache CXF框架实现基于X.509数字证书的安全Web服务的主题。Apache CXF是一个流行的开源Java框架,用于构建和部署Web服务。X.509是一种标准格式,用于表示公钥基础设施(PKI)...

    WebService之CXF开发指南.doc

    WebService之CXF开发指南 该资源总结了WebService之CXF开发指南,涵盖了WebService的基本概念、SOA架构、CXF框架的介绍、CXF的功能特性、安装和目录结构等内容。 WebService基本概念 WebService是一个软件接口,...

    SpringBoot开发WebService之CXF示例

    在本文中,我们将深入探讨如何使用SpringBoot集成Apache CXF来开发Web服务。SpringBoot以其简洁的配置和快速的应用启动而受到广大开发者的欢迎,而CXF是一个强大的开源框架,用于构建和消费Web服务。结合这两者,...

    WebService CXF 对象传递 附

    **WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...

    webservice_cxf Demo

    这个"webservice_cxf Demo"项目是一个基于 Apache CXF 的 Web 服务示例,旨在帮助开发者理解如何使用 CXF 来创建、部署和消费 Web 服务。在这个示例中,我们将探讨 CXF 的核心概念、工作流程以及如何通过它来实现...

    WebService之CXF开发指南

    ### WebService之CXF开发指南 #### 一、概述 WebService技术已经成为企业级应用中不可或缺的一部分,它使得不同系统之间能够以标准化的方式进行交互。在众多WebService框架中,Apache CXF因其灵活、强大的功能和...

    webservice之cxf实例

    【描述】:在这个“webservice之cxf实例”中,我们将深入学习Apache CXF框架在实现Web服务中的具体操作。首先,我们需要了解CXF的基本概念,它作为一个服务端和客户端的栈,支持多种协议和标准,包括SOAP、RESTful、...

    WebService之CXF(一、服务端的使用)

    **WebService之CXF服务端使用详解** 在信息技术领域,WebService是一种基于开放标准的,用于不同系统间进行数据交换的技术。Apache CXF是一个流行的开源框架,它使得开发和部署Web服务变得简单而高效。本篇文章将...

    webservice使用cxf的实例

    总的来说,"webservice使用cxf的实例"这个主题涵盖了从基础理论到实际操作的各个环节,包括CXF框架的使用、Web服务的创建与部署、客户端调用、数据绑定、安全性和Spring集成等多个方面。通过学习和实践,开发者可以...

    WebService之CXF开发指南.rar

    **WebService之CXF开发指南** 在IT行业中,WebService是一种基于开放标准(如WSDL、SOAP和UDDI)的通信协议,它允许不同系统之间进行互操作性交互。CXF,全称Apache CXF,是一个开源的Java框架,用于构建和开发高...

    一头扎进WebService之CXF Shiro Maven ActiveMq ExcelPOI FreeChart视频教程【4.5G】

    一头扎进WebService之CXF Shiro Maven Lucene ActiveMq ExcelPOI JFreeChart视频教程

    WebService-CXF.ppt

    WebService-CXF.ppt

    WebService_CXF范例.

    【WebService CXF详解与入门】 WebService是一种允许不同系统之间进行通信和交互的标准协议,它基于HTTP协议,使得应用程序可以无视具体实现细节地调用互联网上的服务。这种技术使得分布式应用程序的发展成为可能,...

    Webservice-CXF实用手册学习大全

    WebService-CXF实用手册学习大全的知识点涵盖了WebService技术的多个方面,主要分为以下几个部分: 1. WebService基础: - WebService是一种通过网络提供服务的技术,使用HTTP作为传输协议,SOAP作为消息格式,...

    springBoot完整整合WebService框架CXF示例

    SpringBoot与CXF整合是构建基于Web服务的应用程序的一个常见实践。CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序,它支持SOAP和RESTful服务。SpringBoot则简化了Spring应用的初始化和配置,...

    WebService CXF 详细教程

    **WebService CXF 详解** **一、WebService简介** WebService是一种基于标准的,可以在不同操作系统、编程语言之间交换数据的Web应用程序。它通过WSDL(Web服务描述语言)定义了服务接口,利用SOAP(简单对象访问...

Global site tag (gtag.js) - Google Analytics