spring整合CXF

一. 概述

可以在传统的Java EE应用的基础上添加一层Web Service层, 我们的Java EE应用就可以对外暴漏Web Service, 这样就允许任何平台、任何语言编写的程序来调用这个Java EE应用

二. 步骤

1. 新建web工程springCXF, 并复制需要的Jar包:见上图

2. 在web.xml中配置CXF的核心控制器: CXFServlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- Spring核心配置文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/config/applicationContext.xml</param-value>
	</context-param>

	<!-- 加载Spring容器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- 配置CXF的核心Servlet -->
	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
	</servlet>

	<!-- 为CXF的核心Servlet配置URL -->
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/webService/*</url-pattern>
	</servlet-mapping>
</web-app>

3. 在Spring配置文件applicationContext.xml中导入CXF提供的Schema, xml配置文件, 并使用jaxws:endpoint元素来暴露web service

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://cxf.apache.org/jaxws
	http://cxf.apache.org/schemas/jaxws.xsd">

	<!-- 导入CXF为扩展Spring提供的几个XML配置文件 -->
	<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" />

	<!--
		id:指定所定义的Bean在Spring容器中的唯一标识。
		implementor:指定Web Services的实现类,或者引用容器中另一个已有的Bean实例
		address:指定所创建的Web Service的地址,因为CXF不知道该Web应用对应的URL,
				  也不知道Web服务器的监听端口。因此address属性指定的只是一个相对地址,
				 CXF将会在运行时动态确定该Web Services的服务地址。
	-->
	<jaxws:endpoint id="sayHello" implementor="com.zdp.service.impl.HelloServiceImpl" address="/sayHello"></jaxws:endpoint>
</beans>

4. 接口及实现类:

HelloService

//以@WebService Annotation标注,表明该接口将对应一个Web Services
@WebService
public interface HelloService {
	//定义一个方法,该方法将被暴露成一个Web Services操作
	public void sayHello(String name);
}

HelloServiceImpl

@WebService(endpointInterface = "com.zdp.service.HelloService")
public class HelloServiceImpl implements HelloService{
	public void sayHello(String name) {
		System.out.println("hello " + name + ", current time is " + new Date());
	}
}

5. 启动tomcat服务器

6. 新建一个Java工程cxf_Client, 在命令行进入该工程src目录

输入一下命令: wsdl2java http://localhost:9999/springCXF/webService/sayHello?wsdl

7. 写一个测试类:

public class MyClient {
	public static void main(String[] args) {
		HelloServiceImplService factory = new HelloServiceImplService();
		HelloService helloService = factory.getHelloServiceImplPort(); // 返回一个代理
		helloService.sayHello("zhangsan");
	}
}

三. 配置拦截器

其实配置拦截器就是在applicationContext.xml中增加一个配置, 具体的拦截器类请见上一篇博文: http://blog.csdn.net/zdp072/article/details/29245575

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jaxws="http://cxf.apache.org/jaxws"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://cxf.apache.org/jaxws
	http://cxf.apache.org/schemas/jaxws.xsd">

	<!-- 导入CXF为扩展Spring提供的几个XML配置文件 -->
	<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" />

	<!-- 拦截器 -->
    <bean id="authInterceptor" class="com.zdp.interceptor.AuthInterceptor"/> 

	<jaxws:endpoint id="sayHello" implementor="com.zdp.service.impl.HelloServiceImpl" address="/sayHello">
		<jaxws:inInterceptors>
            <ref bean="authInterceptor"/>
        </jaxws:inInterceptors>
	</jaxws:endpoint>
</beans>

spring整合CXF

时间: 2024-08-25 19:41:48

spring整合CXF的相关文章

Spring整合CXF,发布RSETful 风格WebService(转)

Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了.如果你对Spring整合CXF WebService不了解,具体你可以参看这两篇文章: http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html http://www.cnblogs.com/ho

Spring整合CXF之发布WebService服务

今天我们来讲下如何用Spring来整合CXF,来发布WebService服务: 给下官方文档地址:http://cxf.apache.org/docs/writing-a-service-with-spring.html 根据官方文档.我们把前面的实例用Spring整合CXF来处理下.会简化很多: 首先我们来建一个Maven项目 WebService_CXF 建好项目第一步,我们打开pom.xml 我们来添加下Spring支持: <!-- 添加Spring支持 --> <dependen

Spring 整合CXF 实现WebService(JAX-WS)

服务端创建项目 添加依赖 web.xml 配置CXFServlet <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="htt

webservice开发spring整合cxf入门案例

一.创建服务端发布服务 1. 添加依赖 <dependencies> <!-- cxf 进行rs开发 必须导入 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxrs</artifactId> <version>3.0.1</version> </dependency> &l

So easy Webservice 8.spring整合CXF 发布WS

1.添加jar包(cxf的jar包中包含了spring的jar包),添加spring配置文件 2.web.xml中配置CXFServlet,过滤WS服务的地址 <!-- 配置CXFServlet,实现地址过滤的功能,项目启动时实例化 --> <servlet> <servlet-name>cxfServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFSer

spring整合CXF之client

前面已经创建好了服务类,并且发布了服务,现在要去调用发布放服务: 在这里我将其分成两个项目: 1.重新创建一个WebProject ,并且使用wsdl2java 这个工具生成了客户端的代码(得先配置CXF的环境): 在这里小弟我遇到了一个揪心的问题,首先我使用的是JDK1.8,然后在doc中生成代码的时候会出现这样的提示 ‘由于 accessExternalSchema 属性设置的限制而不允许 'file' 访问,因此无法读取方案文档 'xjc.xsd'. 然后我将其替换成1.7的JDK, 然而

Spring整合CXf WebService总结

Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序.关于Java webService框架,主要有AXIS.XFire.CXF,还有Java自带的JAX-WS(必须JDK6以上环境). SOAP RPC的工作原理:类似于web的请求/响应方式,不同之处在于web客户和web服务器之间传输的是HTML数据.在SOAP RPC模式中

学习webservice之cxf(8):Spring整合CXF

新建一个maven项目,添加依赖 <!-- 添加Spring支持 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.7.RELEASE</version> </dependency> <dependency> <group

Mavne + Spring整合CXF

http://blog.csdn.net/xiongyu777888/article/details/23787615(没毛病) http://blog.csdn.net/hbsong75/article/details/41207585(没发病,但是他的配置文件为什么那么些看不懂cxf-servlet.xml) http://blog.csdn.net/blueheart20/article/details/42971713(有毛病,只是为了看说明) http://blog.sina.com.