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 ...
随机推荐
- .NET C#使用微信公众号登录网站
适用于:本文适用于有一定微信开发基础的用户 引言:花了300大洋申请了微信公众平台后,发现不能使用微信公众号登录网站(非微信打开)获得微信帐号.仔细研究后才发现还要再花300大洋申请微信开放平台才能接 ...
- hdu 4604 Deque
http://acm.hdu.edu.cn/showproblem.php?pid=4604 将原数组根据其大小关系处理后 使其大小全在10^5内 处理后为 a1,a2,a3.....an 最优deq ...
- PowerMock使用遇到的问题——2
如果在测一个类的某一个方法时,这个方法还调用了此类的其他方法,那么如何指定其他方法的返回值呢? Partial mock local private method or public method i ...
- POJ 2559 Program C
Submit Status Practice POJ 2559 Description A histogram is a polygon composed of a sequence of recta ...
- Android 查看webview里面的图片
今天介绍一下怎么查看WebView里面的图片,首先要设置WebView能够支持JavaScript,然后实现JavaScript的监听接口: mWebView.getSettings().setJav ...
- Line计划今年全面进军中国市场:建立本地团队
北京时间6月13日下午消息,<华尔街日报>报道称,移动消息应用Line计划于今年晚些时候进军中国市场.Line将在中国建立本地团队,开发内容和功能,从而进一步开拓中国这一全球最大的移动市场 ...
- php获取远程文件大小
获取本地文件大小filesize()就可以了,但是如何获取远程文件的大小呢? 这里介绍三个方法来获取远程文件的大小. 方法1:get_headers <?php get_headers($url ...
- EF学习笔记(二)
DbContext 1.指定连接字符串(上一章提到) public string ConnectionStringName { get; private set; } /// <summary& ...
- 2016 - 1- 19 GCD单例模式
一:单例模式的作用: 1.可以保证在程序运行过程中,一个类只有一个实例,而且易于外界访问.2 2.从而方便的控制了实例的个数,节约系统资源. 二:单例模式的应用场景: 代码: 1.在一个需要实现单例模 ...
- 在windows 、linux下读取目录下所有文件名
Windows要引入的头文件是<Windows.h> 主要是两个函数FindFirstFile.FindNextFile MSDN里是这么说的: FindFirstFile functio ...