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

CXF之一 (与Spring整合)

阅读更多

 

      WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。简单的说WebService就是一个应用程序,它向外界提供了一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。

 

      CXF一个Apache开源的WebService框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。SOA(Service-Oriented Architecture)面向服务架构是一种思想,它将应用程序的不同功能单元通过中立的契约(独立于硬件平台、操作系统和编程语言联系起来,使得各种形式的功能单元更好的集成。目前来说,WebService 是SOA 的一种较好的实现方式,WebService 采用HTTP 作为传输协议,SOAP(Simple Object Access Protocol)作为传输消息的格式。

 

      在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息 格式(或binding)和网络协议(transports)包括SOAP、XML(通过HTTP或JMS)进行访问。CXF同样支持多种model 如:JAX-WS,JBI,SCA和CORBA service。CXF设计成可灵活部署到各种容器中包括Spring-based,JBI,SCA, Servlet和J2EE容器。

 

熟悉了WebService的基础知识之后,入门CXF框架比较简单。CXF与Spring进行整合使用,大大的简化了开发工作。下面就拿HelloWorld来介绍CXF及WebService的基础性东西;

一、环境说明

 1、Spring的环境搭建,这里就不在说了。这里使用的spring2.5

 

 2、下载CXF,这里使用最新版本apache-cxf-2.6.2

 

 二 搭建CXF并与Spring进行整合

    1、所需的CXF的jar

 

    

    2、配置web.xml文件

 

 

 

         	<!--配置CXFServlet begin-->
			  	<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可自定义配置,用于CXFServlet请求地址拦截,访问会用到 -->
			  		<url-pattern>/webservice/*</url-pattern>
			  	</servlet-mapping>
			  	<!--配置CXFServlet end -->
 

 

 

3、Web 服务的接口定义HelloWorld.java

 

 

	  @WebService(serviceName="HelloWorld",targetNamespace=Constants.WS_NAMESPACE)
			public interface HelloWorld {
			
				@WebMethod
				public String say(@WebParam(name="name")String name);
				
				@WebMethod
				public String sayHello(@WebParam(name="user")User user);
				
				@WebMethod
				public List<User> getList(Long id);
			}	  	
	

 

 

 

 

4、Web服务接口实现类 HelloWorldImpl.java

 

 

	                        @Service("HelloWorldImpl")
				public class HelloWorldImpl implements HelloWorld {
					public String say(String name) {
							return name+",您好!";
					}
				
					public String sayHello(User user) {
						return user.getName()+",您好!";
					}
					
					public List<User> getList(Long id){
						List<User> list = new ArrayList<User>();
						User user= new User();
						Long sid=1L;
						user.setId(sid);
						user.setName("张三"+sid);
						list.add(user);
						
						user= new User();
						sid=2L;
						user.setId(sid);
						user.setName("张三"+sid);
						list.add(user);
			
						return list;
					}
				}
 

注意:看到很多Web服务接口的实现类标注了 @WebService注解,我在这测试了实现类不标注该注解及@WebMethod正常。还没有看到具体文档

 

5、传递对象Customer的PO类定义

                       

 

 @XmlRootElement(name="User")
				@XmlAccessorType(XmlAccessType.FIELD)
				@XmlType(name="User")
				public class User{
					
					@XmlElement(nillable=true)
					private Long id;
					
					@XmlElement(nillable=true)
					private String name;
					
					@XmlElement(nillable=true)
					private int age;
				
					public Long getId() {
						return id;
					}
				
					public void setId(Long id) {
						this.id = id;
					}
				
					public String getName() {
						return name;
					}
				
					public void setName(String name) {
						this.name = name;
					}
				
					public int getAge() {
						return age;
					}
				
					public void setAge(int age) {
						this.age = age;
					}
				}					
		
 

 

 

这里使用很多注解,对于这些注解请参考 WebService注解详细 

 

 

6、CXF的Spring配置文件appCtx-cxf.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="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" />
				<bean id="outMessageInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
				
				<!--implementor:指定接口具体实现类,address:随意配-->
				<jaxws:endpoint id="helloWorld"  implementor="#HelloWorldImpl" address="/HelloWorld"  >
					<!-- 输入日志拦截器 -->
				   <jaxws:inInterceptors>
				   		<ref bean="inMessageInterceptor"/>
				   </jaxws:inInterceptors>
				   <!-- 输出日志拦截器 -->
				   <jaxws:outInterceptors>
				      <ref bean="outMessageInterceptor"/>
				   </jaxws:outInterceptors>
				</jaxws:endpoint>
				<!-- WebService 客户端 spring 配置文件cxf与Spring集成,cxf里提供了一个工厂类org.apache.cxf.jaxws.JaxWsProxyFactoryBean,
				可以方便实现的调用WebService。serviceClass属性是接口类,address是webService的路径在其他bean里如果要调用webservice,
				只要将client这个bean注入到需要使用的bean里。-->
				<bean id="client" class="com.exp.service.outer.HelloWorld" factory-bean="clientFactory" factory-method="create" />
				<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
					<property name="serviceClass" value="com.exp.service.outer.HelloWorld" />
					<property name="address" value="http://localhost:8080/demo/webservice/HelloWorld" />
				</bean>
			</beans>		
 

 

 

7、运行服务器

  访问http://localhost:8080/demo/webservice/HelloWorld?wsdl 地址,您会看到很长的XML文件

 

     看到的XML一大堆,不容易明白。具体解释参考 WSDL解释

  

8、客户端测试

    

 

 public class HelloWorldClient {
					public static void main(String[] args) {
						ApplicationContext context = new ClassPathXmlApplicationContext(
								new String[] { "classpath*:/config/spring_cfg/appCtx-*.xml" });
						HelloWorld client = (HelloWorld) context.getBean("client");
						System.out.println(client.say("ABC"));
						
						User user= new User();
						customer.setName("张三");
						System.out.println(client.sayHello(customer));
						
						List<User> list = client.getList(1L);
						for(User c:list){
							System.out.println(c.getName());
						}
					}
				}
 

 

 

     

 

  • 大小: 16.5 KB
分享到:
评论
4 楼 TopCombine 2015-05-28  
不错,测试通过
3 楼 Java_Worker_cr 2014-04-04  
3Q,楼主辛苦了
2 楼 wujiandao008 2013-12-03  
[b][u]
引用
[list]
[*][img][/img]
[/list]
[/u][/b]
1 楼 chenwill3 2013-09-03  
哥们,你用HTTPURLConnection试过了吗,貌似这样会出错。

相关推荐

    cxf整合spring

    将CXF与Spring整合的主要好处在于,可以利用Spring的强大管理和配置能力来管理CXF服务。Spring的DI可以帮助我们将CXF的服务bean与其他业务逻辑bean解耦,从而提高代码的可测试性和可维护性。此外,Spring还提供了对...

    cxf-2.7.3与spring3整合开发步骤.

    在本文中,我们将深入探讨如何将Apache CXF 2.7.3与Spring 3.0.7框架整合进行开发。Apache CXF是一个开源的Java框架,主要用于构建和部署SOAP和RESTful Web服务,而Spring则是一个广泛使用的应用框架,提供了依赖...

    cxf+spring整合

    "CXF+Spring整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...

    cxf-2.7.3与spring3.0.7整合实例

    总之,CXF 2.7.3与Spring 3.0.7的整合提供了一种强大且灵活的方式来构建Web服务。无论是对于新手还是经验丰富的开发者,理解这种整合方式都将对提升开发效率和项目质量大有裨益。通过实际操作这个例子,你可以深入...

    webservice(cxf)与spring整合源码+文档

    标题"webservice(cxf)与spring整合源码+文档"表明这是一个关于如何将CXF Web服务与Spring框架集成的学习资源。文档和源代码一起提供,使得学习者能够通过实践来理解这一过程。 描述中提到"webservice与spring整合...

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

    **标题解析:** "cxf与Spring的整合实例(适合初学者)" 指的是一个教程或示例项目,旨在帮助初次接触CXF和Spring框架的开发者理解如何将这两个强大的开源工具集成在一起。CXF是一个流行的开源服务框架,常用于构建...

    CXF和spring整合所需jar包

    这里我们将深入探讨CXF与Spring整合时所需的jar包及其作用。 首先,我们需要理解整合的目的:通过Spring管理CXF的服务生命周期,使得服务的创建、配置和管理更加便捷。为了实现这一目标,我们需要以下关键的jar包:...

    CXF整合Spring步骤

    本教程将详细介绍如何将 CXF 与 Spring 整合,帮助开发者在实际项目中更好地运用这两者的优势。 首先,我们需要理解 CXF 和 Spring 的基本概念。Apache CXF 是一个开源的 Java 服务框架,它支持多种 Web 服务标准,...

    Spring整合CXF发布服务

    当我们需要在Spring环境中发布Web服务时,Spring与CXF的整合就显得尤为重要。本篇文章将深入探讨如何实现Spring与CXF的整合,以便发布服务。 1. **Spring与CXF整合的基础** 在整合Spring和CXF之前,我们需要确保...

    CXF Spring 整合

    在Java EE应用开发中,发布和消费Web服务是一项常见的任务,CXF和Spring框架的整合提供了强大而灵活的解决方案。本篇文章将详细讲解如何利用CXF和Spring进行整合,以便在Java EE应用中轻松地发布和调用Web服务。 ...

    cxf开发webservice与spring整合所需jar包

    将CXF与Spring整合,可以实现更高效、灵活的服务开发。下面我们将详细探讨在CXF开发Web服务并与Spring整合时,这些特定jar包的作用。 1. **cxf-2.7.1.jar**:这是CXF的核心库,包含了处理Web服务请求和响应的基本...

    CXF与Spring 2.5整合

    【标题】:“CXF与Spring 2.5整合” 在Java世界中,CXF和Spring是两个非常重要的开源框架。CXF是一个广泛使用的Web服务框架,它支持SOAP、RESTful等多种Web服务标准,而Spring则是一个强大的应用框架,提供依赖注入...

    Spring整合CXF demo

    这个"Spring整合CXF demo"项目提供了一个直观的例子,帮助开发者理解如何在Spring环境中配置和使用CXF服务。 ### 1. Spring框架介绍 Spring是一个开源的Java平台,它提供了全面的应用程序开发框架,简化了Java EE...

    CXF与Spring整合下载文件四

    标题中的"CXF与Spring整合下载文件四"表明这是一个关于整合Apache CXF(一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序)和Spring框架的教程或资源集合。Spring是一个广泛使用的Java应用框架,它...

    WebService的CXF整合Spring

    将CXF与Spring整合的主要目的是利用Spring的管理能力来配置和控制CXF组件,例如服务端点、客户端代理等。这样可以实现更细粒度的控制,提高代码的可测试性和可维护性。 整合步骤如下: 1. **引入依赖**:首先,在...

    CXF与Spring整合需要的完整jar文件

    首先,让我们了解CXF与Spring整合的基础知识: 1. **Spring容器**:Spring框架的核心是IoC(Inversion of Control)容器,它负责管理对象的生命周期和依赖关系。在整合CXF时,我们将利用Spring来配置和管理CXF的...

    CXF与spring整合实现

    #### 一、CXF与Spring整合概述 **CXF**是Apache旗下的一个开源框架,主要用于构建和消费基于SOAP、REST等协议的Web服务。它提供了一套强大的API和工具,使得开发人员能够轻松地在Java环境中实现Web服务。 **Spring...

    cxf与spring整合

    **一、CXF与Spring整合的优势** 1. **依赖注入**:通过Spring的DI(Dependency Injection)特性,可以轻松管理CXF组件,如服务端点和服务代理。 2. **配置简化**:Spring的XML配置文件可以替代CXF的XML配置,使得...

    cxf2.7+spring4

    【标题】"cxf2.7+spring4" 指的是Apache CXF 2.7版本与Spring框架4.1.5版本的整合应用。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)中的Web服务。而Spring框架则是一个广泛使用的Java...

Global site tag (gtag.js) - Google Analytics