`
hailong_qin
  • 浏览: 11444 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

CXF 整合 Spring 搭建Web Service

 
阅读更多
一:CXF 的开发环境: 1、CXF版本:2.7.8 ,官网:http://cxf.apache.org/download.html (提示:不要下载最新版本的apache-cxf-3.0.0,本人有这个血泪史,请看上篇文章。) 2、Eclipse版本:3.5 3、JDK :1.6 4、Tomcat版本:apache-tomcat-7.0.42
二:搭建CXF Demo
1、新建Web工程,这里命名为cxfservice





2、将CXF文件下Lib文件夹中的jar包导入到工程中




3、web.xml集成Spring、CXF配置文件
<?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="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>cxfdemo</display-name>
  
      <context-param>  
          
        <param-value>classpath:applicationContext.xml</param-value>  
    </context-param>  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <servlet>  
        <servlet-name>CXFServlet</servlet-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>  
  
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

4、[size=12px; line-height: 25.1875px;" data-mce-mark="1]在工程中新建包com.credit56.service.cxf.service,在包中新建inteface,名称为IGreetingService:[/size]

import com.credit56.service.cxf.model.Customer;

/**
 * 
 * 
 * 功能:Hello World web service Demo
 * 
 * 
 * @ClassName: HelloWordService
 * @version V1.0
 * @date 2013年12月18日
 * @author qinhailong
 */
public interface IGreetingService {

	public String greeting(String name);

	public Customer getCustomer(Customer customer);

	public String getCustomerOfJSON();

}



5、编写接口实现类GreetingServiceImpl

package com.credit56.service.cxf.service.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import net.sf.json.JSONObject;

import com.credit56.service.cxf.model.Customer;
import com.credit56.service.cxf.service.IGreetingService;

/**
 * 
 * 功能:web service Demo
 * 
 * 
 * @ClassName: HelloWorldServiceImpl
 * @version V1.0
 * @date 2013年12月18日
 * @author qinhailong
 */
@WebService
public class GreetingServiceImpl implements IGreetingService {

	/**
	 * 
	 * 功能:问候语
	 * 
	 * 
	 * @author qinhailong
	 * @date 2013年12月18日
	 * @param name
	 * @return
	 * @see com.credit56.demo.cxf.service.IGreetingService#sayHello(java.lang.String)
	 */
	@Override
	@WebMethod
	public String greeting(@WebParam(name = "name")
	String name) {
		return new StringBuffer(name).append(",Hello Word! currentTime is ")
				.append(new SimpleDateFormat("yyyy-MM-dd").format(new Date())).toString();
	}

	/**
	 * 
	 * 
	 * 功能:返回Customer
	 * 
	 * 
	 * @author qinhailong
	 * @date 2013年12月19日
	 * @param customer
	 * @return
	 * @see com.credit56.demo.cxf.service.IGreetingService#getCustomer(com.credit56.demo.cxf.model.Customer)
	 */
	@Override
	@WebMethod
	public Customer getCustomer(@WebParam(name = "customer")
	Customer customer) {
		if (null != customer.getId()) {
			return customer;
		}
		Customer c = new Customer();
		c.setId(1L);
		c.setBirthday(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
		c.setName("shuqin_wang");
		return c;
	}

	/**
	 * 
	 * 
	 * 功能:返回客户信息JOSN
	 * 
	 * 
	 * @author qinhailong
	 * @date 2013年12月19日
	 * @return
	 * @see com.credit56.demo.cxf.service.IGreetingService#getCustomerOfJSON()
	 */
	@Override
	@WebMethod
	public String getCustomerOfJSON() {
		Customer customer = this.getCustomer(new Customer());
		JSONObject jsonObject = JSONObject.fromObject(customer);
		return jsonObject.toString();
	}

}


6、与Spring 集成(applicationContext.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:context="http://www.springframework.org/schema/context"
	xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://cxf.apache.org/jaxws 
       http://cxf.apache.org/schemas/jaxws.xsd
	   http://cxf.apache.org/jaxrs
 	   http://cxf.apache.org/schemas/jaxrs.xsd">



	<!-- Import Apache CXF Bean Definition -->
	<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="greetingService"
		implementor="com.credit56.demo.cxf.service.impl.GreetingServiceImpl"
		address="/greetingService">
	</jaxws:endpoint>

</beans>

7、部署项目,启动tomcat,访问:http:localhost:8080/cxfservice


点击{http://impl.service.cxf.demo.credit56.com/}GreetingServiceImplService


8、说明CXF发布已经成功。


二、客户端调用
新建cxfclient项目,过程与上类似,但为了方便,就建Application,其中过程不重复。
1、新建一个interface,与上相同
package com.credit56.demo.cxf.client.service;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import com.credit56.demo.cxf.client.model.Customer;

/**
 * 
 * <p class="detail">
 * 功能:Hello World web service Demo
 * 
 * 
 * @ClassName: HelloWordService
 * @version V1.0
 * @date 2013年12月18日
 * @author [url=mailto:engineer01@great-tao.com]qinhailong[/url]
 */
@WebService
public interface IGreetingService {

	@WebMethod
	// public String sayHello(@WebParam(name="name") String name);
	// 通过@WebParam(name="***")来设置WSDL中的参数名称,默认为arg0、arg1......
	public String greeting(@WebParam(name = "name") String name);

	@WebMethod
	public Customer getCustomer(@WebParam(name = "customer") Customer customer);

	@WebMethod
	public String getCustomerOfJSON();

}


2、CXF与Spring集成applicationContext.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:context="http://www.springframework.org/schema/context"
	xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://cxf.apache.org/jaxws 
       http://cxf.apache.org/schemas/jaxws.xsd
	   http://cxf.apache.org/jaxrs
 	   http://cxf.apache.org/schemas/jaxrs.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" />

	<!-- 通过与服务端配置相对的 CXF 标签 <jaxws:client> 来定义客户端访问服务的声明 -->
	<jaxws:client id="greetingServiceClient"
		serviceClass="com.credit56.demo.cxf.client.service.IGreetingService"
		address="http://localhost:8080/cxfdemo/greetingService">
	</jaxws:client>

</beans>


3、客户端main调用:
package com.credit56.demo.cxf.client;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.credit56.demo.cxf.client.model.Customer;
import com.credit56.demo.cxf.client.service.IGreetingService;
//org/apache/xml/security/resource/xmlsecurity




public class CXFTest {

	public static void main(String[] args) {
		
		
		System.out.println("======"+ System.getProperty("java.endorsed.dirs"));
		IGreetingService greetingServiceClient = (IGreetingService) new ClassPathXmlApplicationContext(
				"classpath:applicationContext.xml").getBean("greetingServiceClient");
		greetingServiceClient.greeting("shuqin_wang");
		Customer customer = new Customer();
		customer.setId(1L);
		customer.setBirthday(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
		customer.setName("hailong_qin");
		Customer c = greetingServiceClient.getCustomer(customer);
		System.out.println("id:" + c.getId() + "  name:" + c.getName() + "  birthday:" + c.getBirthday());
		System.out.println(greetingServiceClient.getCustomerOfJSON());
	}

}


4、完整代码见附件
  • 大小: 77.4 KB
  • 大小: 51.3 KB
  • 大小: 42.6 KB
  • 大小: 146.3 KB
2
0
分享到:
评论

相关推荐

    spring+cxf 整合jar包

    1. **服务提供者(Service Provider)**:在Spring+CXF整合中,我们可以使用Spring配置来定义CXF服务。这包括服务接口、实现类、服务终结点(Endpoint)等,通过XML配置文件或注解进行声明。 2. **服务消费者...

    spring3+cxf 整合jar包

    整合Spring3和CXF,可以实现服务的灵活管理和高效的调用,尤其适合构建SOA(Service-Oriented Architecture)架构的应用。这个"spring3+cxf2.7 整合jar包"提供了完整的整合环境,包括所有必要的库文件,使得开发者...

    idea + spring4.3.7.RELEASE+cxf3.1.0整合+客户端调用

    本教程将围绕"idea + spring4.3.7.RELEASE + cxf3.1.0"的整合进行详细讲解,旨在帮助开发者理解如何在IDEA(IntelliJ IDEA)环境中搭建一个基于Maven的Spring MVC项目,并结合Apache CXF实现Web服务的消费与提供。...

    ssm+cxf(基于Maven开发的ssm框架集成cxf发布web service服务)

    源码里面包含了了一个简单的插入功能,主要是为了测试mybatis是否连接上数据库的时候写的测试类,作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周...如题,基于maven项目的ssm框架和cxf框架的整合。

    cxf集成spring

    通过将CXF与Spring整合,我们可以利用Spring的容器管理特性来管理CXF的组件,简化配置,并提高代码的可测试性。 集成CXF和Spring的过程主要涉及以下步骤: 1. **引入依赖**:在项目中,我们需要引入CXF和Spring的...

    Java-Spring-WebService最基础的配置示例

    而Spring与Web服务的整合则进一步增强了其在分布式系统中的应用能力。本示例将探讨如何在Spring框架中配置最基础的Web服务,特别关注的是基于CXF的Web服务。CXF是一个强大的开源框架,它支持SOAP和RESTful风格的Web...

    发布webService服务接口与spring整合教程

    本教程将详细讲解如何将Web Service服务接口与Spring框架进行整合,以便在实际开发中实现高效、灵活的服务提供。 首先,让我们了解一下Web Service的基本概念。Web Service是一种软件系统,它通过使用开放标准(如...

    spring2.5+ibatis3+web service cxf 例子MyEclipse工程

    标题中的“spring2.5+ibatis3+web service cxf”揭示了这是一个关于整合Spring 2.5、iBATIS 3和Apache CXF Web服务的示例项目。这个项目是在MyEclipse环境中构建的,它是一个强大的Java集成开发环境,特别适合企业级...

    CXF3.0+Spring3.2 RESTFul服务(下)

    搭建CXF+Spring环境 首先,我们需要在项目中添加CXF和Spring的相关依赖。在Maven项目中,可以在pom.xml文件中加入以下依赖: ```xml &lt;groupId&gt;org.apache.cxf &lt;artifactId&gt;cxf-rt-frontend-jaxrs &lt;version&gt;...

    spring集成cxf(webservice)

    通过利用Spring的依赖管理和事务控制能力,以及CXF丰富的功能支持,可以快速搭建出满足业务需求的WebService系统。无论是传统的SOAP服务还是现代的RESTful服务,CXF都能提供良好的支持,极大地提高了开发效率和系统...

    cxf所需jar包(内含配置文件)

    "cxf所需jar包(内含配置文件)"这个压缩包,正如其名,提供了SpringMVC与CXF整合所需的依赖库以及配置文件,使得开发者能够更方便地在Spring环境中集成CXF来处理Web服务。 首先,让我们详细了解一下CXF框架。CXF...

    apache-cxf-3.1.14.zip和springmvc 配置jar

    通过整合CXF,我们可以利用Spring的依赖注入和管理能力,使得Web服务的开发、测试和部署更加便捷。 在集成Apache CXF和Spring MVC时,主要步骤如下: 1. **引入依赖**:首先,在项目中添加CXF和Spring MVC的依赖库...

    CXF入门.rar

    通过以上分析,我们可以看出,这个压缩包提供了从基础到进阶的CXF学习资料,包括CXF与Spring的集成、CXF在实际项目中的应用,以及与Struts2的整合示例,对于初学者或者希望深入理解CXF的开发者来说,是非常宝贵的...

    SSM+cxf+log4j整合框架

    SSM+cxf+log4j整合框架是一种常见的Java企业级应用开发模式,它结合了Spring、SpringMVC、MyBatis以及CXF和Log4j等多个组件,为开发者提供了高效、灵活的开发环境。让我们详细了解一下这些技术及其整合的关键点。 1...

    SpringBoot框架及CXF发布WebService

    SpringBoot是由Pivotal团队提供的全新框架,其设计目标是简化Spring应用的初始搭建以及开发过程。SpringBoot的核心理念是“约定优于配置”,它通过默认配置简化了Spring应用程序的创建,同时也提供了丰富的命令行...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    总结,本教程详细介绍了如何利用Spring Boot和Apache CXF搭建Web Service服务端,以及使用JAX-WS的`javax.xml.ws.Service`和Apache CXF的`JaxWsProxyFactoryBean`两种方式实现Java客户端调用。这些技能对于开发者来...

    springboot+cxfwebservice

    在IT行业中,Spring Boot和Apache CXF是两个非常重要的开源框架。Spring Boot简化了Spring应用程序的初始设置和...理解并掌握Spring Boot和CXF的整合,对于任何涉及Web服务开发的Java开发者来说都是一个宝贵的技能。

    本人精心准备的cxf的完整jar包

    这个压缩包中的JAR文件很可能包含了CXF的核心库、扩展功能库以及它们的依赖项,确保用户能够快速搭建和运行CXF Web服务。 7. **服务端和客户端**:CXF不仅支持创建Web服务,还提供了生成客户端代码的功能。开发者...

Global site tag (gtag.js) - Google Analytics