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
分享到:
相关推荐
将CXF与Spring整合的主要好处在于,可以利用Spring的强大管理和配置能力来管理CXF服务。Spring的DI可以帮助我们将CXF的服务bean与其他业务逻辑bean解耦,从而提高代码的可测试性和可维护性。此外,Spring还提供了对...
在本文中,我们将深入探讨如何将Apache CXF 2.7.3与Spring 3.0.7框架整合进行开发。Apache CXF是一个开源的Java框架,主要用于构建和部署SOAP和RESTful Web服务,而Spring则是一个广泛使用的应用框架,提供了依赖...
"CXF+Spring整合"是企业级Java应用程序中常用的一种技术组合,它结合了Apache CXF(一个用于构建和服务导向架构的开源框架)和Spring框架的优势,以实现高效、灵活的服务开发和管理。在Java世界里,CXF常用于创建Web...
总之,CXF 2.7.3与Spring 3.0.7的整合提供了一种强大且灵活的方式来构建Web服务。无论是对于新手还是经验丰富的开发者,理解这种整合方式都将对提升开发效率和项目质量大有裨益。通过实际操作这个例子,你可以深入...
标题"webservice(cxf)与spring整合源码+文档"表明这是一个关于如何将CXF Web服务与Spring框架集成的学习资源。文档和源代码一起提供,使得学习者能够通过实践来理解这一过程。 描述中提到"webservice与spring整合...
**标题解析:** "cxf与Spring的整合实例(适合初学者)" 指的是一个教程或示例项目,旨在帮助初次接触CXF和Spring框架的开发者理解如何将这两个强大的开源工具集成在一起。CXF是一个流行的开源服务框架,常用于构建...
这里我们将深入探讨CXF与Spring整合时所需的jar包及其作用。 首先,我们需要理解整合的目的:通过Spring管理CXF的服务生命周期,使得服务的创建、配置和管理更加便捷。为了实现这一目标,我们需要以下关键的jar包:...
本教程将详细介绍如何将 CXF 与 Spring 整合,帮助开发者在实际项目中更好地运用这两者的优势。 首先,我们需要理解 CXF 和 Spring 的基本概念。Apache CXF 是一个开源的 Java 服务框架,它支持多种 Web 服务标准,...
当我们需要在Spring环境中发布Web服务时,Spring与CXF的整合就显得尤为重要。本篇文章将深入探讨如何实现Spring与CXF的整合,以便发布服务。 1. **Spring与CXF整合的基础** 在整合Spring和CXF之前,我们需要确保...
在Java EE应用开发中,发布和消费Web服务是一项常见的任务,CXF和Spring框架的整合提供了强大而灵活的解决方案。本篇文章将详细讲解如何利用CXF和Spring进行整合,以便在Java EE应用中轻松地发布和调用Web服务。 ...
将CXF与Spring整合,可以实现更高效、灵活的服务开发。下面我们将详细探讨在CXF开发Web服务并与Spring整合时,这些特定jar包的作用。 1. **cxf-2.7.1.jar**:这是CXF的核心库,包含了处理Web服务请求和响应的基本...
【标题】:“CXF与Spring 2.5整合” 在Java世界中,CXF和Spring是两个非常重要的开源框架。CXF是一个广泛使用的Web服务框架,它支持SOAP、RESTful等多种Web服务标准,而Spring则是一个强大的应用框架,提供依赖注入...
这个"Spring整合CXF demo"项目提供了一个直观的例子,帮助开发者理解如何在Spring环境中配置和使用CXF服务。 ### 1. Spring框架介绍 Spring是一个开源的Java平台,它提供了全面的应用程序开发框架,简化了Java EE...
标题中的"CXF与Spring整合下载文件四"表明这是一个关于整合Apache CXF(一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序)和Spring框架的教程或资源集合。Spring是一个广泛使用的Java应用框架,它...
将CXF与Spring整合的主要目的是利用Spring的管理能力来配置和控制CXF组件,例如服务端点、客户端代理等。这样可以实现更细粒度的控制,提高代码的可测试性和可维护性。 整合步骤如下: 1. **引入依赖**:首先,在...
首先,让我们了解CXF与Spring整合的基础知识: 1. **Spring容器**:Spring框架的核心是IoC(Inversion of Control)容器,它负责管理对象的生命周期和依赖关系。在整合CXF时,我们将利用Spring来配置和管理CXF的...
#### 一、CXF与Spring整合概述 **CXF**是Apache旗下的一个开源框架,主要用于构建和消费基于SOAP、REST等协议的Web服务。它提供了一套强大的API和工具,使得开发人员能够轻松地在Java环境中实现Web服务。 **Spring...
**一、CXF与Spring整合的优势** 1. **依赖注入**:通过Spring的DI(Dependency Injection)特性,可以轻松管理CXF组件,如服务端点和服务代理。 2. **配置简化**:Spring的XML配置文件可以替代CXF的XML配置,使得...
【标题】"cxf2.7+spring4" 指的是Apache CXF 2.7版本与Spring框架4.1.5版本的整合应用。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)中的Web服务。而Spring框架则是一个广泛使用的Java...