一、导入cxf所需jar档如下:
commons-logging-1.1.1.jar
geronimo-activation_1.1_spec-1.0.2.jar (or Sun's Activation jar)
geronimo-annotation_1.0_spec-1.1.1.jar (JSR 250)
geronimo-javamail_1.4_spec-1.6.jar (or Sun's JavaMail jar)
geronimo-servlet_2.5_spec-1.2.jar (or Sun's Servlet jar)
geronimo-ws-metadata_2.0_spec-1.1.2.jar (JSR 181)
geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)
geronimo-stax-api_1.0_spec-1.0.1.jar (or other stax-api jar)
jaxb-api-2.1.jar (jdk1.6自帶,jdk1.6無需加)
jaxb-impl-2.1.12.jar (jdk1.6自帶,jdk1.6無需加)
jetty-6.1.21.jar
jetty-util-6.1.21.jar
neethi-2.0.4.jar
saaj-api-1.3.jar
saaj-impl-1.3.2.jar
wsdl4j-1.6.2.jar
wstx-asl-3.2.8.jar
XmlSchema-1.4.5.jar
xml-resolver-1.2.jar
cxf-2.2.2.jar
FastInfoset-1.2.2.jar
jaxen-1.1.jar
二、server 端:
1.HelloWorld.java
代码:
package com.comwave.xzh.webservice;
import javax.jws.WebService;
/**
* @author panda_xiong
* @version 1.0
*/
@WebService
public interface HelloWorld
{
String say(String hello);
}
2.HelloWorldImpl.java
代码:
package com.comwave.xzh.webservice;
import javax.jws.WebService;
/**
* @author panda_xiong
* @version 1.0
*/
@WebService(endpointInterface = "com.comwave.xzh.webservice.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String say(String hello) {
return "hello " + hello;
}
}
3.server发布spring配置档server.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.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" />
<bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" />
<bean id="jaxWsServiceFactoryBean" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="wrapped" value="true" />
<property name="dataBinding" ref="aegisBean" />
</bean>
<jaxws:endpoint id="webServiceHelloWorld" implementor="com.comwave.xzh.webservice.HelloWorldImpl" address="/HelloWorld">
<jaxws:serviceFactory>
<ref bean="jaxWsServiceFactoryBean"/>
</jaxws:serviceFactory>
</jaxws:endpoint>
</beans>
可以将上面<jaxws:endpoint>替换成
<bean id="helloWorldImpl" class="com.comwave.xzh.webservice.HelloWorldImpl" />
<jaxws:endpoint id="webServiceHelloWorld" implementor="#helloWorldImpl" address="/HelloWorld"/>
我们注意到这里引入了两个新的名称空间jaxws、jaxrs,jaxws 是配置SOAP 方式的Web 服务,有jaxws:server、jaxws:endpoint、jaxws:client 三个元素,jaxws:server 和jaxws:endpoint 是等效的,都用于发布Web 服务,出现jaxws:endpoint 的原因是JAX-WS 规范中使用EndPoint 发布Web 服务,CXF 为了和JAX-WS 对应,提供了这个与jaxws:server 功能一样的配置元素;jaxrs是REST 方式的Web 服务,有jaxrs:server、jaxrs:client 两个元素。
三、客户端
1.客户端spring配置档client.xml
<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.0.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
<bean id="aegisBean" class="org.apache.cxf.aegis.databinding.AegisDatabinding" />
<bean id="serviceFactoryBean" class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
<property name="dataBinding" ref="aegisBean" />
</bean>
<bean id="client" class="com.comwave.xzh.webservice.HelloWorld" factory-bean="clientFactory" factory-method="create" />
<bean id="clientFactory" class="org.apache.cxf.frontend.ClientProxyFactoryBean">
<property name="serviceFactory" ref="serviceFactoryBean" />
<property name="serviceClass" value="com.comwave.xzh.webservice.HelloWorld" />
<property name="address" value="http://localhost:8089/WebService/ws/HelloWorld" />
</bean>
</beans>
使用Spring开发SOAP方式的客户端(使用标签)
<jaxws:client id="client" address="http://localhost:8089/WebService/ws/HelloWorld" serviceClass="com.comwave.xzh.webservice.HelloWorld"></jaxws:client>
这里属性serviceClass 指向客户端生成的接口,这里就不能指向一个Bean 的名字,因为接口是不能被实例化的。然后你就可以向访问Spring 容器中的Bean 一样去访问这个CXF 的客户端代理(JaxWsClientProxy),下面是我们在JSP 中书写的调用代码:
IHelloService helloService = (IHelloService) WebApplicationContextUtils.getWebApplicationContext(application).getBean"helloServiceClient");
out.print(helloService.selectMaxAgeStudent(c1, c2).getName());
从II、III 的示例可以看出借助Spring 在Web 容器中发布、访问Web 服务极其简单。关于具体的<jaxws: … 配置项,大多数都可以从元素、属性的名字上看出其作用,具体解释请参看http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html。
注意:上面8089为tomcat发布端口,而WebService为该项目名称。
2.ClientTest.java
代码:
package com.comwave.xzh.webservice;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ClientTest {
private static ClassPathXmlApplicationContext context;
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "client.xml" });
HelloWorld client = (HelloWorld) context.getBean("client");
String response = client.say("jimmy");
System.out.println(response);
}
}
四、web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:server.xml,classpath:client.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
分享到:
相关推荐
将CXF与Spring整合的主要好处在于,可以利用Spring的强大管理和配置能力来管理CXF服务。Spring的DI可以帮助我们将CXF的服务bean与其他业务逻辑bean解耦,从而提高代码的可测试性和可维护性。此外,Spring还提供了对...
在企业级应用开发中,Apache CXF 和 Spring 框架的整合是非常常见的,因为它们分别提供了强大的服务端和客户端的 Web 服务支持以及灵活的依赖注入和配置管理。本教程将详细介绍如何将 CXF 与 Spring 整合,帮助...
将CXF与Spring整合的主要目的是利用Spring的管理能力来配置和控制CXF组件,例如服务端点、客户端代理等。这样可以实现更细粒度的控制,提高代码的可测试性和可维护性。 整合步骤如下: 1. **引入依赖**:首先,在...
CXF WebService整合Spring示例工程代码demo可以直接导入eclipse。参照网页http://www.cnblogs.com/hoojo/archive/2011/03/30/1999563.html 完成的webService服务提供。 大致步骤: 1.引入cxf和其他需要的jar包,(本...
Apache Cxf WebService整合Spring 处理Map、非javabean式的复合类等CXF无法自动转化的类型 CXF为服务器端和客户端添加自定义拦截器进行权限检查验证并且控制台打印日志
将CXF与Spring整合,能够充分利用两者的优势,提供更高效、灵活的Web服务实现。 ### CXF简介 CXF全称是CXF CXF,原名XFire,是一个开放源码的服务框架,它提供了多种方式来构建和部署Web服务,包括基于WSDL(Web ...
将CXF与Spring整合,可以充分利用Spring的管理能力,简化服务的创建和维护。 1. **整合步骤** - **配置Spring**:首先,我们需要在Spring配置文件中定义CXF的相关bean,如服务接口的实现类、服务端点、服务发布器...
通过Spring,可以将CXF和Struts2整合起来,使得各个组件之间的协作变得更加流畅。 【Struts2】是ActionServlet的一个实现,用于处理HTTP请求。Struts2.3.4版本包含了一些关键改进,如增强了拦截器的灵活性,提供了...
在Java EE应用开发中,发布和消费Web服务是一项常见的任务,CXF和Spring框架的整合提供了强大而灵活的解决方案。本篇文章将详细讲解如何利用CXF和Spring进行整合,以便在Java EE应用中轻松地发布和调用Web服务。 ...
"CXF+Spring整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...
Apache CXF和Spring提供了丰富的扩展点,可以集成如Spring Security来控制访问权限,使用Spring AOP来处理事务,以及通过CXF的拦截器机制来实现自定义的日志、验证等功能。 总结来说,Apache CXF 2与Spring 2.5的...
【标题】"cxf2.7+spring4" 指的是Apache CXF 2.7版本与Spring框架4.1.5版本的整合应用。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)中的Web服务。而Spring框架则是一个广泛使用的Java...
整合CXF与Spring的主要优点是,Spring可以帮助管理CXF服务的生命周期,并提供依赖注入(DI)功能,使得服务更容易测试和维护。以下是一步一步的整合过程: 1. **环境准备**:确保已安装并配置了Java开发环境,如JDK...
CXF WebService整合Spring代码(包含服务,客户端两个工程 和 文档) 需要视频的话,留邮箱
本文将详细探讨在整合CXF和Spring时所需的JAR包以及它们在系统中的作用。 首先,我们需要理解CXF和Spring各自的核心功能。CXF作为一个Web服务框架,主要负责服务的发布、消费和通信,包括SOAP和RESTful协议的支持。...
在本文中,我们将深入探讨如何将Apache CXF 2.7.3与Spring 3.0.7框架整合进行开发。Apache CXF是一个开源的Java框架,主要用于构建和部署SOAP和RESTful Web服务,而Spring则是一个广泛使用的应用框架,提供了依赖...
标题"webservice(cxf)与spring整合源码+文档"表明这是一个关于如何将CXF Web服务与Spring框架集成的学习资源。文档和源代码一起提供,使得学习者能够通过实践来理解这一过程。 描述中提到"webservice与spring整合...
这里我们将深入探讨CXF与Spring整合时所需的jar包及其作用。 首先,我们需要理解整合的目的:通过Spring管理CXF的服务生命周期,使得服务的创建、配置和管理更加便捷。为了实现这一目标,我们需要以下关键的jar包:...
**CXF 2.7.3 与 Spring 3.0.7 整合实例** 在企业级开发中,服务接口的实现与调用是非常重要的一环,Apache CXF 和 Spring 框架的结合提供了强大的支持。Apache CXF 是一个开源的、全面的Web服务框架,它允许开发者...
3. **CXF-Spring整合模块**:CXF提供了cxf-spring模块,它包含了一组Spring的Bean定义,可以自动加载并配置CXF的核心组件。 4. **AOP集成**:Spring的AOP可以用来添加跨切面的功能,如日志记录、安全检查等,这些在...