Eclipse+CXF+Spring共同开发的示例,供大家赏鉴。

多系统(异构系统)进行交互时,一种良好的方式便是调用Web Service,本示例基于Apache组织的CXF,为了方便起见特将服务端和客户端写在同一个工程下,实际项目中是不可能的,但是客户端却依赖于服务端的Web Service接口,那么可以通过导出jar的方式。

环境:
Eclipse Mars.1 Release (4.5.1)
JDK 1.7.0_15
Tomcat 7
CXF 2.1.3

Spring3

示例项目结构图:

如上图所示,全部依赖的第三方库都在lib中,下面贴出全部代码。

IHelloService.java

package bing.server;

import javax.jws.WebService;

/**
* <p>
* WebService接口
* </p>
*
* @author IceWee
* @date 2012-7-6
* @version 1.0
*/
@WebService
public interface IHelloService { public String sayHello(String username); }

HelloServiceImpl.java

package bing.server;

import javax.jws.WebService;

/**
* <p>
* WebService实现类
* </p>
*
* @author IceWee
* @date 2012-7-6
* @version 1.0
*/
@WebService(endpointInterface = "bing.server.IHelloService", serviceName = "helloService")
public class HelloServiceImpl implements IHelloService { @Override
public String sayHello(String username) {
return "hello, " + username;
} }

  HelloServiceClient.java

package bing.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import bing.server.IHelloService; /**
* <p>
* WebService调用方-客户端
* </p>
*
* @author IceWee
* @date 2012-7-6
* @version 1.0
*/
public class HelloServiceClient { public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-client.xml");
IHelloService helloService = (IHelloService) context.getBean("client");
String response = helloService.sayHello("Peter");
System.out.println(response);
} }

applicationContext-server.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">
<!-- ***注意*** 手动添加的内容: xmlns:jaxws="http://cxf.apache.org/jaxws" 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="helloService" implementor="bing.server.HelloServiceImpl"
address="/helloService" /> </beans>

applicationContext-client.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">
<!-- ***注意*** 手动添加的内容: xmlns:jaxws="http://cxf.apache.org/jaxws" 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="client" class="bing.server.IHelloService" factory-bean="clientFactory"
factory-method="create" /> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="bing.server.IHelloService" />
<property name="address"
value="http://localhost:8082/CXFDemo/ws/helloService" />
</bean>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>CXFDemo</display-name> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-server.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>/ws/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

所有项目都已配置完成,可以发布到Tomcat了,在浏览器中输入:http://localhost:8082/CXFDemo/ws,返回如图:

从上图中可以看到我们对外发布的WebService接口,点击蓝色超链接,返回如图:

到此,证明我们的Web Service已经发布成功,可以进行调用测试了。运行HelloServiceClient,返回如图:

使用SoapUI运行结果如下:

声明:本文转载自http://www.blogjava.net/icewee/archive/2012/07/06/382399.html  对其中遇到的一些报错问题做了改进,亲测可以完美运行

【转】CXF+Spring+Eclipse简明示例的更多相关文章

  1. 使用CXF+Spring发布WebService,启动报错

    使用CXF+Spring发布WebService,启动报错,日志如下: 五月 12, 2017 9:01:37 下午 org.apache.tomcat.util.digester.SetProper ...

  2. cxf spring restful 问题解决(jar包冲突)

    SEVERE: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error ...

  3. 解决cxf+spring发布的webservice,types,portType和message以import方式导入

    用cxf+spring发布了webservice,发现生成的wsdl的types,message和portType都以import的方式导入的.. 原因:命名空间问题 我想要生成的wsdl在同个文件中 ...

  4. [llvm] LLVM 核心类简明示例 : llvm::Value && llvm::Type && llvm::Constant

    LLVM 核心类简明示例 : llvm::Value && llvm::Type && llvm::Constant llvm核心类位于 include/llvm/IR ...

  5. Spring MVC 项目示例

    Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架.Spring的web框架围绕DispatcherServlet设计, 作用是将请求分发到不同 ...

  6. 本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考)

    本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考) 本人亲测-SSM环境搭建(使用eclipse作为示例,过程挺全的,可作为参考) 本人亲测-SSM环境搭建(使用eclip ...

  7. Spring松耦合示例(转)& IOC

    Spring松耦合示例 轻松学习Spring<一> IoC容器和Dependency Injection模式 最近公司需要,项目中要用到Spring和Ibatis.趁着过年好好学习学习.I ...

  8. Spring+CXF的WebServices简单示例

    本文就最简单的WebServices示例来演示Spring和CXF的整合. 使用Maven创建webapp项目,pom如下 <properties> <cxf.version> ...

  9. CXF Spring开发WebService,基于SOAP和REST方式 【转】

    官网示例 http://cxf.apache.org/docs/writing-a-service-with-spring.html http://cxf.apache.org/docs/jax-rs ...

随机推荐

  1. JavaScript高级程序设计-10.11: DOM及其扩展

    什么是DOM? DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API(应用程序编程接口).DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 文档节点(do ...

  2. Button背景图片有拉伸

    1.将图片做成9.png2.用TextView 3.将minHeight, minWidth设为0 4.http://blog.csdn.net/oathevil/article/details/23 ...

  3. lower_bound和upper_bound算法实现

    lower_bound算法要求在已经按照非递减顺序排序的数组中找到第一个大于等于给定值key的那个数,其基本实现原理是二分查找,如下所示: int lower_bound(vector<int& ...

  4. pace.js原理简介

    简介: 不少童鞋可能都使用过pace.js:http://github.hubspot.com/pace/docs/welcome/ 只要在页面上引入pace.js和相关的css,并不需要对业务逻辑做 ...

  5. delphi字符串操作函数一览

    首部 function SameText(const S1, S2: string): Boolean; $[SysUtils.pas 功能 返回两个字符串是否相等 说明 不区分大小写 参考 < ...

  6. Xcode 使用技巧

    Xcode 之 设置文件生成时的模板 Xcode 之 修改 Create by Xcode 之 添加前缀 Xcode 之 alcatraz (插件管理器) Xcode 之 重构功能 Xcode 之 s ...

  7. 日期、时间选择器(DatePicker和TimePicker)的功能与用法

    DatePicker和TimePicker是两个比较易用的控件,它们都从FrameLayout派生而来,其中DatePicker供用户选择日期:而TimePicker则供用户选择时间. DatePic ...

  8. Carthage - 一个简单、去集中化的Cocoa依赖管理器

    作为一名新时代的90后猿 在swift大势所趋的时候  怎能不会Carthage 配置它其实很简单  下面我们一步一步来 (1)打开你的终端 输入 brew update brew install c ...

  9. 删除SVN文件 Delete SVN Folders.reg

    批量删除文件夹里的SVN 文件 ------------------------------------------------------------------------------------ ...

  10. Oracle Job 语法和时间间隔的设定(转)

    http://blog.itpub.net/27157/viewspace-425567/ 初始化相关参数job_queue_processesalter system set job_queue_p ...