1、引入需要的jar包http://cxf.apache.org/download.html
可以下载相应jar包,本次使用的是apache-cxf-2.2.12
2、在
web.xml
中配置
cxf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-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>/*</url-pattern>
</servlet-mapping>
</web-app>
3、编写applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- START SNIPPET: beans -->
<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" />
<jaxws:endpoint id="helloWorld"
implementor="com.fxb.webservice.service.impl.HelloServiceImpl"
address="/HelloWorld">
<jaxws:inInterceptors>
<bean class="com.fxb.webservice.interceptor.MyInterceptor"></bean>
</jaxws:inInterceptors>
</jaxws:endpoint>
</beans>
<!-- END SNIPPET: beans -->
4、然后就可以编写
service
代码,作为服务层的接口必须加上
@WebService
标注,因为这个接口将会被我们暴露为
webservice
。
package com.fxb.webservice.service;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface HelloService {
public String hello(@WebParam(name="name")String name);
}
5、编写
application-client.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- START SNIPPET: beans -->
<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/schema/jaxws.xsd">
<bean id="client" class="com.fxb.webservice.client.HelloClient"
factory-bean="clientFactory" factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.fxb.webservice.service.HelloService"/>
<property name="address" value="http://localhost:8080/CXFSpring/HelloWorld"/>
</bean>
</beans>
<!-- END SNIPPET: beans -->
6、编写客户端类
package com.fxb.webservice.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.fxb.webservice.service.HelloService;
public class HelloClient {
public static void main(String[] args) {
// START SNIPPET: client
ClassPathXmlApplicationContext context
= new ClassPathXmlApplicationContext(new String[] {"com/fxb/webservice/client/applicationContext-client.xml"});
HelloService client = (HelloService)context.getBean("client");
String response = client.hello("Joe");
System.out.println("Response: " + response);
System.exit(0);
// END SNIPPET: client
}
}
7、自定的
Interceptor
一定要实现
CXF
的
Interceptor
接口,这个接口中有两个方法:
void handleFault(T message)
当拦截消息处理失败时候所调用的方法。
void handleMessage(T message)
拦截了一个消息,并做处理的方法。
package com.fxb.webservice.interceptor;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.log4j.Logger;
public class MyInterceptor extends AbstractPhaseInterceptor<Message> {
private Logger log = Logger.getLogger(MyInterceptor.class);
public MyInterceptor(String phase) {
super(phase);
}
public MyInterceptor() {
super(Phase.RECEIVE);
}
@SuppressWarnings("static-access")
public void handleMessage(Message msg) throws Fault {
String uri = String.valueOf(msg.get(msg.REQUEST_URI));
StringBuffer bf = new StringBuffer(uri + ".xml");
msg.put(msg.REQUEST_URI, String.valueOf(bf));
System.out.println("in my intercetptor11111111111111111111");
System.out.println(msg.get(msg.REQUEST_URI));
log.info("in my interceptor:");
}
@Override
public void handleFault(Message message) {
super.handleFault(message);
System.out.println("handleFault@@@@@@@@@@@@@@@@@@@@@2");
}
}
分享到:
相关推荐
下面将详细介绍CXF结合Spring的配置和开发流程。 首先,我们需要了解如何在Spring配置文件中引入CXF。在Spring项目中,我们通常会在`applicationContext.xml`或类似的配置文件中定义CXF的Bus,这是CXF的核心组件,...
2. **配置Spring**:创建一个Spring配置文件,声明CXF所需的bean。这可能包括JAX-WS端点、服务实现类、数据绑定组件等。例如,你可以定义一个`JaxWsServerFactoryBean`来启动CXF服务器。 ```xml <bean id="cxf" ...
"CXF结合Spring开发WebServices示例工程"包含了服务端和客户端的代码示例。服务端代码演示了如何定义服务接口,实现服务逻辑,并将其配置到Spring中。客户端代码展示了如何创建CXF客户端代理,并使用它来调用服务端...
总的来说,CXF与Spring的结合为Java Web服务开发提供了一个强大的平台,简化了服务的创建、部署和管理,提高了代码的可维护性和灵活性。理解并熟练掌握这两个框架的整合,对于提升Java EE项目开发的效率和质量至关...
1. **Spring配置**:通过Spring的配置文件,可以声明式地定义CXF服务。例如,使用`<jaxws:endpoint>`或`<jaxrs:server>`标签,可以轻松地创建和配置Web服务端点。这些标签允许开发者指定服务实现类、绑定地址、WSDL...
在整合过程中,通常会创建一个Spring配置文件,用于声明CXF的服务器端点、服务实现和数据绑定。然后,Spring会根据配置加载并管理这些组件。这样,我们就可以利用Spring的强大功能,如事务管理、安全控制等,同时...
4. **服务注册与发布**:使用Spring配置的`JAXWSServerFactoryBean`或`JAXRSServerFactoryBean`,将服务接口和实现绑定到特定的URL上,发布Web服务。 5. **客户端调用**:在需要消费Web服务的项目中,可以使用...
综上所述,"CXF整合Spring的客户端和服务端"是一个全面的示例,涵盖了从服务创建到客户端调用的全过程,对于理解和实践SOA和Web服务开发具有很高的价值。同时,提供的文档和配置文件可以帮助开发者快速上手,节省了...
1. **创建Spring配置文件**: 首先,我们需要在Spring的配置文件(如`applicationContext.xml`)中声明CXF的bean。这包括`JaxWsServerFactoryBean`,它负责创建和发布Web服务。例如: ```xml ...
CXF允许开发者轻松地实现和消费这些服务,同时结合Spring,可以提供更灵活的服务管理和依赖注入功能。Maven的加入使得项目构建过程更加标准化,自动化处理依赖管理,使得整个开发流程更为高效。 【详细知识点】 1....
- 配置Spring上下文:在Spring配置文件中声明CXF的Bus实例,以及服务接口和服务实现类。这可以通过使用`<jaxws:endpoint>`或`<jaxrs:server>`标签来完成。 ```xml ``` - 使用Spring自动装配:通过`@...
总结来说,"webservice CXF结合Spring所需jar包"是构建基于CXF和Spring的Web服务的关键组成部分,它们提供了开发、运行和管理Web服务所必需的功能。了解并正确使用这些jar包,能帮助开发者更高效地实现服务的创建、...
在开发过程中,我们需要确保 CXF 客户端能够正确地与服务端通信,这可能涉及到对WSDL(Web服务描述语言)文件的理解和处理。同时,为了调试和优化,我们需要关注性能指标,如请求延迟、错误处理和异常报告。最后,...
5. **配置Spring**:创建一个Spring配置文件(如`applicationContext.xml`),配置CXF的bean,以便Spring能够管理和启动Web服务。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi...
然后,在Spring配置文件中声明CXF的端点并关联服务实现: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf=...
- 配置Spring上下文:在Spring配置文件中定义CXF的bean,如JAX-WS的服务接口和服务实现。 - 部署服务:使用Spring的`<jaxws:endpoint>`标签或者`WebServiceServerFactoryBean`部署CXF服务。 - 创建客户端:通过...
通过学习这个例子,开发者不仅可以了解如何使用CXF创建Web服务客户端,还能掌握如何结合Spring框架进行有效管理和控制。这将提高你的Java Web服务开发技能,并为更复杂的分布式系统开发打下基础。
3. **CXF配置**:在Spring配置中,需要配置一个`JAXWSServerFactoryBean`,它负责创建和发布Web服务。在这里,你可以设置端点地址、服务类和服务实现类。 4. **启动服务**:在Spring的启动过程中,通过调用`...
这个压缩包文件"CXF接口Spring+Hibernate的添加完整版"提供了将这三个技术整合在一起的一个示例,特别关注了如何实现一个基于CXF的接口,并结合Spring和Hibernate来完成数据的添加操作。以下是对这些知识点的详细...