`
左手边
  • 浏览: 96985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CXF结合spring的配置和开发流程1

    博客分类:
  • CXF
 
阅读更多

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的配置和开发流程2

    下面将详细介绍CXF结合Spring的配置和开发流程。 首先,我们需要了解如何在Spring配置文件中引入CXF。在Spring项目中,我们通常会在`applicationContext.xml`或类似的配置文件中定义CXF的Bus,这是CXF的核心组件,...

    cxf整合spring

    2. **配置Spring**:创建一个Spring配置文件,声明CXF所需的bean。这可能包括JAX-WS端点、服务实现类、数据绑定组件等。例如,你可以定义一个`JaxWsServerFactoryBean`来启动CXF服务器。 ```xml &lt;bean id="cxf" ...

    CXF结合Spring开发WebServices示例工程

    "CXF结合Spring开发WebServices示例工程"包含了服务端和客户端的代码示例。服务端代码演示了如何定义服务接口,实现服务逻辑,并将其配置到Spring中。客户端代码展示了如何创建CXF客户端代理,并使用它来调用服务端...

    cxf 结合spring所需jar包

    总的来说,CXF与Spring的结合为Java Web服务开发提供了一个强大的平台,简化了服务的创建、部署和管理,提高了代码的可维护性和灵活性。理解并熟练掌握这两个框架的整合,对于提升Java EE项目开发的效率和质量至关...

    CXF-Spring相关jar包

    1. **Spring配置**:通过Spring的配置文件,可以声明式地定义CXF服务。例如,使用`&lt;jaxws:endpoint&gt;`或`&lt;jaxrs:server&gt;`标签,可以轻松地创建和配置Web服务端点。这些标签允许开发者指定服务实现类、绑定地址、WSDL...

    CXF和spring整合所需jar包

    在整合过程中,通常会创建一个Spring配置文件,用于声明CXF的服务器端点、服务实现和数据绑定。然后,Spring会根据配置加载并管理这些组件。这样,我们就可以利用Spring的强大功能,如事务管理、安全控制等,同时...

    cxf+spring实现webservice

    4. **服务注册与发布**:使用Spring配置的`JAXWSServerFactoryBean`或`JAXRSServerFactoryBean`,将服务接口和实现绑定到特定的URL上,发布Web服务。 5. **客户端调用**:在需要消费Web服务的项目中,可以使用...

    CXF整合spring的客户端和服务端

    综上所述,"CXF整合Spring的客户端和服务端"是一个全面的示例,涵盖了从服务创建到客户端调用的全过程,对于理解和实践SOA和Web服务开发具有很高的价值。同时,提供的文档和配置文件可以帮助开发者快速上手,节省了...

    CXF和Spring搭建webservice代码

    1. **创建Spring配置文件**: 首先,我们需要在Spring的配置文件(如`applicationContext.xml`)中声明CXF的bean。这包括`JaxWsServerFactoryBean`,它负责创建和发布Web服务。例如: ```xml ...

    cxf spring maven 实例

    CXF允许开发者轻松地实现和消费这些服务,同时结合Spring,可以提供更灵活的服务管理和依赖注入功能。Maven的加入使得项目构建过程更加标准化,自动化处理依赖管理,使得整个开发流程更为高效。 【详细知识点】 1....

    cxf+spring整合

    - 配置Spring上下文:在Spring配置文件中声明CXF的Bus实例,以及服务接口和服务实现类。这可以通过使用`&lt;jaxws:endpoint&gt;`或`&lt;jaxrs:server&gt;`标签来完成。 ```xml ``` - 使用Spring自动装配:通过`@...

    webservice CXF结合Spring所需jar包

    总结来说,"webservice CXF结合Spring所需jar包"是构建基于CXF和Spring的Web服务的关键组成部分,它们提供了开发、运行和管理Web服务所必需的功能。了解并正确使用这些jar包,能帮助开发者更高效地实现服务的创建、...

    cxf+spring+client

    在开发过程中,我们需要确保 CXF 客户端能够正确地与服务端通信,这可能涉及到对WSDL(Web服务描述语言)文件的理解和处理。同时,为了调试和优化,我们需要关注性能指标,如请求延迟、错误处理和异常报告。最后,...

    CXF2+Spring2.5开发WebService实例

    5. **配置Spring**:创建一个Spring配置文件(如`applicationContext.xml`),配置CXF的bean,以便Spring能够管理和启动Web服务。 ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi...

    基于maven的cxf+spring简单demo

    然后,在Spring配置文件中声明CXF的端点并关联服务实现: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf=...

    cxf与Spring的整合实例(适合初学者)

    - 配置Spring上下文:在Spring配置文件中定义CXF的bean,如JAX-WS的服务接口和服务实现。 - 部署服务:使用Spring的`&lt;jaxws:endpoint&gt;`标签或者`WebServiceServerFactoryBean`部署CXF服务。 - 创建客户端:通过...

    cxf+spring webservice demo client

    通过学习这个例子,开发者不仅可以了解如何使用CXF创建Web服务客户端,还能掌握如何结合Spring框架进行有效管理和控制。这将提高你的Java Web服务开发技能,并为更复杂的分布式系统开发打下基础。

    apahe cxf 与spring 开发例子1

    3. **CXF配置**:在Spring配置中,需要配置一个`JAXWSServerFactoryBean`,它负责创建和发布Web服务。在这里,你可以设置端点地址、服务类和服务实现类。 4. **启动服务**:在Spring的启动过程中,通过调用`...

    CXF接口Spring+Hibernate的添加完整版

    这个压缩包文件"CXF接口Spring+Hibernate的添加完整版"提供了将这三个技术整合在一起的一个示例,特别关注了如何实现一个基于CXF的接口,并结合Spring和Hibernate来完成数据的添加操作。以下是对这些知识点的详细...

Global site tag (gtag.js) - Google Analytics