Apache CXF 101 Win Eclipse开发环境搭建
前言
博客草稿中“SOA生态系统初探”一文一直没有进展,感觉要将SOA、Web Service(WS)、REST等概念阐述清楚还需要一些酝酿。
顶天须得立地,这里记录一些“下里巴人”的实践,主要考察Apache Axis2和Apache CXF两个Java服务开发框架,首先从CXF着手。
目录
1 工具
2 Eclipse中Apache CXF配置
3 运行实例
4 参考资料
内容
1 工具
Windows 7
Eclipse Juno(4.2.0, JEE version, build-id: 20120614-1722)
Apache CXF 2.4.2(较新版本2.7.11在配置过程中莫名其妙的出现一些错误,回退到较低版本),将CXF解压目录记为CXF_HOME
Apache Tomcat 7.0
2 Eclipse中Apache CXF配置
Window->Preferences->Web Services->CXF 2.x Preferences->CXF Runtime中添加运行时,指定CXF解压目录即可

3 运行实例
预期目标:自底向上(bottom-up)创建WS,将WS部署到Servlet容器中,观察服务的WSDL、通过浏览器调用WS接口。
创建Dynamic Web Project项目
项目结构(添加index.html)

预期的Project Facets
Before

After

编写服务实现类
package com.spike.cxf;
import javax.jws.WebService;
/**
* Description: HelloService Implementation<br/>
* Date: 2014-5-11 下午7:59:33
*/
@WebService(targetNamespace = "http://cxf.spike.com/", portName = "HelloServiceImplPort", serviceName = "HelloServiceImplService")
public class HelloServiceImpl {
public String getVersion() {
return "1.0";
}
public String greeting(String user) {
return "Hello " + user + "!";
}
}
基于Dynamic Web Project添加CXF Facets:右键服务实现类,Generate Web Service

配置WS类型

服务端点接口(SEI)选择或创建,这里默认

选择服务方法注解,这里默认

CXF Java2WS配置,这里默认

启动服务(实际是Servlet容器)等待

服务发布方式设置,这里默认

点击Finish后项目结构
Package Explorer

Project Explorer

Servlet容器的“配置”,端口选用了8082


访问服务http://localhost:8082/CXF/services

点击WSDL链接http://localhost:8082/CXF/HelloServiceImplPort?wsdl

生成的WSDL和XSD文件
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="HelloServiceImplService" targetNamespace="http://cxf.spike.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://cxf.spike.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://cxf.spike.com/" schemaLocation="helloserviceimpl_schema1.xsd"/>
</schema>
</wsdl:types>
<wsdl:message name="greeting">
<wsdl:part name="parameters" element="tns:greeting">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getVersion">
<wsdl:part name="parameters" element="tns:getVersion">
</wsdl:part>
</wsdl:message>
<wsdl:message name="getVersionResponse">
<wsdl:part name="parameters" element="tns:getVersionResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="greetingResponse">
<wsdl:part name="parameters" element="tns:greetingResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="HelloServiceImpl">
<wsdl:operation name="greeting">
<wsdl:input name="greeting" message="tns:greeting">
</wsdl:input>
<wsdl:output name="greetingResponse" message="tns:greetingResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getVersion">
<wsdl:input name="getVersion" message="tns:getVersion">
</wsdl:input>
<wsdl:output name="getVersionResponse" message="tns:getVersionResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="HelloServiceImplServiceSoapBinding" type="tns:HelloServiceImpl">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="greeting">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="greeting">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="greetingResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="getVersion">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="getVersion">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getVersionResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="HelloServiceImplService">
<wsdl:port name="HelloServiceImplPort" binding="tns:HelloServiceImplServiceSoapBinding">
<soap:address location="http://localhost:8082/CXF/services/HelloServiceImplPort"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
<?xml version="1.0" encoding="utf-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://cxf.spike.com/" elementFormDefault="unqualified" targetNamespace="http://cxf.spike.com/" version="1.0">
<xs:element name="getVersion" type="tns:getVersion"/>
<xs:element name="getVersionResponse" type="tns:getVersionResponse"/>
<xs:element name="greeting" type="tns:greeting"/>
<xs:element name="greetingResponse" type="tns:greetingResponse"/>
<xs:complexType name="greeting">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="greetingResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getVersion">
<xs:sequence/>
</xs:complexType>
<xs:complexType name="getVersionResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
调用服务接口方法
(1)http://localhost:8082/CXF/services/HelloServiceImplPort/getVersion

(2)http://localhost:8082/CXF/services/HelloServiceImplPort/greeting?arg0=zhoujiagen

4 参考资料
[1] JAX-WS with Apache CXF and Eclipse [step1] http://angelozerr.wordpress.com/2011/08/23/jaxwscxf_step1/
[2] JAX-WS with Apache CXF and Eclipse [step2] http://angelozerr.wordpress.com/2011/08/24/jaxwscxf_step2/
Apache CXF 101 Win Eclipse开发环境搭建的更多相关文章
- 大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建
大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建 大数据应用之Windows平台Hbase客户端Eclipse环境搭建-Java版 作者:张子良 版权所有,转载请注明出处 引子 ...
- [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题) 网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...
- Hadoop Eclipse开发环境搭建
This document is from my evernote, when I was still at baidu, I have a complete hadoop developme ...
- (转)Hadoop Eclipse开发环境搭建
来源:http://www.cnblogs.com/justinzhang/p/4261851.html This document is from my evernote, when I was s ...
- zookeeper Eclipse 开发环境搭建及简单示例
一,下载Zookeeper安装包 从官方网站下载稳定版安装包后,解压. 其中ZK_HOME 为:D:\Program Files\zookeeper-3.4.9 二,启动Zookeeper Serve ...
- libgdx for eclipse开发环境搭建
1.安装jdk1.7以上 2.下载libgdx1.2.0 下载地址:https://libgdx.badlogicgames.com/releases 3.下载项目创建工具(老版本的) 下载地址:ht ...
- Hadoop伪分布配置与基于Eclipse开发环境搭建
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- MAC下Android的Eclipse开发环境搭建
原文链接:https://www.cnblogs.com/macro-cheng/archive/2011/09/30/android-001.html 一.Eclipse的下载 到网站:http:/ ...
- Windows下PHP+Eclipse开发环境搭建 及错误解决(apache2.2服务无法启动 发生服务特定错误:1)
前言 Eclipse与php/apache的关系:Eclipse只是用来写代码的,如果想要在浏览器查看运行效果就要让php/apache的运行目录指向你的代码目录.Eclipse貌似不会自己和apac ...
随机推荐
- 利用开源框架Volley来下载文本和图片。
Android Volley是Android平台上很好用的第三方开源网络通信框架.使用简单,功能强大. 下载连接地址:http://download.csdn.net/detail/zhangphil ...
- C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)
定时器事件代码 static void Main(string[] args) { Method(); #region 定时器事件 Timer aTimer = new Timer(); aTimer ...
- [Js]Ajax
一.什么是Ajax 不刷新的情况下读取数据或提交数据 (最早出现ajax:谷歌地图,拖动一下出现一片新的视野) 应用:用户注册.在线聊天.微博 特性:只能从服务器上去读取数据(所以我们需要配置自己的服 ...
- 二模 (7) day1
第一题: 题目大意: 给出数轴上N棵树的坐标和高度,如果两棵树之间的距离小于其中一颗树的高度,那么就有树会被挡住.因此要把一些树砍矮一点.求砍树的总高度最小值. N<=100000; 解题过程: ...
- struts2 ModelDriven 和 Preparable 拦截器
Struts2 运行流程图-1
- Android google map 两点之间的距离
在Android google map中,有时候会碰到计算两地的距离,下面的辅助类就可以帮助你计算距离: public class DistanceHelper { /** Names for the ...
- SharePoint 2013 开发——概述
博客地址:http://blog.csdn.net/FoxDave 近来阅读SharePoint 2013开发一书,带着与大家一起分享其中的内容. 部署场景: 本地部署(On-Premise D ...
- vs2012 断点不能调试
调试ASP.NET时发现,设置的断点被视而不见 提示错误 debugging information for ‘iisexpress.exe’cannot be found or does not m ...
- vs2012 .netFramwork2.0发布到xp
开发环境 windows server2008R2 VS2012 .net Framwork2.0 开发的winform程序 在有的xp系统下不能运行 选择 项目属性=>编译 Build=&g ...
- SmartZoneOCR识别控件免费下载地址
SmartZone™光学字符识别工具包,使开发人员能够进行带状区域光学字符识别,带状区域在表单处理应用程序中经常使用.本产品所包含的.NET控件以及ActiveX COM组件在内部使用两种单独的识别技 ...