- 浏览: 225338 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (212)
- 架构师-01-文档目录 (3)
- 架构师-02-组织 (7)
- 架构师-03-实施 (35)
- 架构师-04-监督 (14)
- 架构师-05-工具 (29)
- 架构师-09-引用文集 (63)
- 专题-01-微博应用 (5)
- 专题-02-GoogleEarth (1)
- 专题-03-运行维护 (9)
- 专题-04-经纪人营平 (3)
- 专题-05-RCP&RAP (5)
- 专题-06-框架PK (3)
- 专题-07-Android (13)
- 专题-08-UI (3)
- 专题-liferay6 (6)
- 专题-extjs4 (3)
- 专题-CXF (3)
- 专题-封闭网络的社会化 (0)
- 扯谈 (4)
- 外包 (9)
- 专题-C++ (4)
- 专题-09-BI (2)
- jquery&easyui (2)
- 专题-搜索引擎 (1)
最新评论
-
brighter:
oMapper.configure(Deserializati ...
jackson 抛出 bean 中没有定义字段的错误,只好用 gson -
PassFeed_free:
public Bitmap decode(ImageDecod ...
android universalimageloader 几点改进 -
PassFeed_free:
楼主你好, 请问这个库, 在大屏显示高清图片 ,listvie ...
android universalimageloader 几点改进 -
yonghong:
楼主只是揣测
JIRA4.1 升级到 JIRA5.1 -
abdxj:
"Could NOT parse license t ...
JIRA4.1 升级到 JIRA5.1
Rest 方法简洁得令人抓狂,必须得把现有的 service 封装成 REST 方式。 Apache CXF 是不二之选。
计划一下内容:
(1)了解 CXF;
(2)下载 CXF;
(3)集成现有环境;
(4)封装 PhotoService 试试;
(5)前端调用一下下。
一、了解CXF
引用http://www.iteye.com/topic/424737
http://www.iteye.com/topic/424737 写道
概要:
CXF 力求为服务构建必须的基础组件,CXF的目标如下:
1,支持不同的绑定,包括SOAP,REST 和 Corba。
2,支持WS相关标准,包括WS-Addressing, WS-Security, WS-ReliableMessaging, 和 WS-Policy。
3,支持多种传输协议。
4,可插入的数据绑定。
5,前端的清晰分离,像 JAX-WS 从核心代码中分离。
6,高性能。
7,可嵌入。
CXF架构主要由下面几部分组成。
1,总线(Bus):这是CXF架构的主干。
2,传送消息 & 拦截器(Interceptors):它们提供了在底层的消息和管道层之上的功能。
3,前端:前端提供了一个编程模型来创建服务(像 JAX-WS)。
4,服务:服务管理一个服务模型(类WSDL模型来描述服务)
5,绑定,绑定提供解析这些协议(像 SOAP,REST,Corba)的功能
6,传输,由目的地和管道组成的传输抽象模型,使CXF保持传输中立。
好!下面让我们看一看CXF的各个组成部分以及它们是如何一起工作的。
总线(Bus):
总线是CXF运行时共享资源的供应者,共享资源包括:WSDL管理者,绑定工厂管理者等。总线能够很容易地被扩展
来包含你自己定制的资源和服务,或者你可以替换默认资源(像你自己的(可能基于Tomcat)HTTP目的地工厂(基于Jetty))
这些可能都由依赖注入来完成:默认的总线实现基于Spring(把运行时组件连接起来)。
SpringBusFactory 在类路径的META-INF/cxf目录下 查找所有 bean 配置文件,然后以这些
配置文件构建一个application context,构建 application context 的 bean 配置文件包括:
1,META-INF/cxf/cxf.xml (只在 cxf-rt-core )
2,META-INF/cxf/cxf-extension.xml (像在 cxf-rt-bindings-soap)
3,META-INF/cxf/cxf-property-editors.xml (像在 cxf-rt-transports-http).
消息传递 & 拦截器
CXF 建立在一个通用的消息传递层(由消息,拦截器 和 拦截器链。拦截器是功能的基础单元)之上。
CXF 力求为服务构建必须的基础组件,CXF的目标如下:
1,支持不同的绑定,包括SOAP,REST 和 Corba。
2,支持WS相关标准,包括WS-Addressing, WS-Security, WS-ReliableMessaging, 和 WS-Policy。
3,支持多种传输协议。
4,可插入的数据绑定。
5,前端的清晰分离,像 JAX-WS 从核心代码中分离。
6,高性能。
7,可嵌入。
CXF架构主要由下面几部分组成。
1,总线(Bus):这是CXF架构的主干。
2,传送消息 & 拦截器(Interceptors):它们提供了在底层的消息和管道层之上的功能。
3,前端:前端提供了一个编程模型来创建服务(像 JAX-WS)。
4,服务:服务管理一个服务模型(类WSDL模型来描述服务)
5,绑定,绑定提供解析这些协议(像 SOAP,REST,Corba)的功能
6,传输,由目的地和管道组成的传输抽象模型,使CXF保持传输中立。
好!下面让我们看一看CXF的各个组成部分以及它们是如何一起工作的。
总线(Bus):
总线是CXF运行时共享资源的供应者,共享资源包括:WSDL管理者,绑定工厂管理者等。总线能够很容易地被扩展
来包含你自己定制的资源和服务,或者你可以替换默认资源(像你自己的(可能基于Tomcat)HTTP目的地工厂(基于Jetty))
这些可能都由依赖注入来完成:默认的总线实现基于Spring(把运行时组件连接起来)。
SpringBusFactory 在类路径的META-INF/cxf目录下 查找所有 bean 配置文件,然后以这些
配置文件构建一个application context,构建 application context 的 bean 配置文件包括:
1,META-INF/cxf/cxf.xml (只在 cxf-rt-core )
2,META-INF/cxf/cxf-extension.xml (像在 cxf-rt-bindings-soap)
3,META-INF/cxf/cxf-property-editors.xml (像在 cxf-rt-transports-http).
消息传递 & 拦截器
CXF 建立在一个通用的消息传递层(由消息,拦截器 和 拦截器链。拦截器是功能的基础单元)之上。
二、下载
完成这件事最没有技术含量了。http://cxf.apache.org/download.html
三、集成现有环境
四、封装 PhotoService 试试
五、前端调用一下下
http://www.yoxigen.com/yoxview/
六、问题汇总
(1)JSONProvider 检查
<!-- custom JSONProvider with serializeAsArray to force arrays when only one item exists in a collection --> <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider"> <property name="serializeAsArray" value="true"/> <property name="arrayKeys" ref="jsonKeys"/> </bean> ... <bean id="streamingServiceImpl" class="com.plusrun.apps.streaming.rest.impl.StreamingServiceImpl" parent="remoteSupport"> </bean> <jaxrs:server id="streamingService" address="/v2/rest/activity-stream"> <jaxrs:serviceBeans> <ref bean="streamingServiceImpl"/> </jaxrs:serviceBeans> <jaxrs:providers> <ref bean="jsonProvider"/> </jaxrs:providers> </jaxrs:server>
可以在扩展 JSONProvider 的方法中检查钓鱼方法
public void writeTo(Object obj, Class<?> cls, Type genericType, Annotation[] anns, MediaType m, MultivaluedMap<String, Object> headers, OutputStream os) throws IOException { if ("GET".equalsIgnoreCase(this.request.getMethod())) { os.write("不支持浏览器 GET 方法".getBytes()); os.flush(); } super.writeTo(obj, cls, genericType, anns, m, headers, os); }
(2)输出 Java List 对象的时候,如果结果集是一条记录时,输出到 XML 和 JSON 都不是数组;如果结果集是两条以上的时候,输出的 XML 就自动变成数组。NND 给前端造成极大的困惑,搞了两小时,才整明白,JAXB 输出 XML 时,对 LIST 支持不太好。
解决方法:定义 arrayKeys
<util:list id="jsonKeys"> <value>Users</value> </util:list> <util:list id="jsonTypes"> <value>application/json</value> <value>application/jettison</value> </util:list> <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider"> <property name="serializeAsArray" value="true"/> <property name="arrayKeys" ref="jsonKeys"/> <property name="produceMediaTypes" ref="jsonTypes"/> <property name="consumeMediaTypes" ref="jsonTypes"/> </bean> <jaxrs:server id="restApiResource" address="/"> <jaxrs:serviceBeans>
<ref bean="userAuthServiceResource"/> </jaxrs:serviceBeans> <jaxrs:providers> <ref bean="jsonProvider"/> </jaxrs:providers> </jaxrs:server>
...
发表评论
-
集成Hibernate Search做全文检索
2014-05-03 15:42 539集成Hibernate Search做全文检索 原文来自 h ... -
Base64扩展,自定义字串和顺序
2012-12-06 11:10 1676Base64很标准,sun 的 jdk 包含了实现,JS ... -
避免跨域问题 ajax proxy
2012-12-04 09:31 820前端全是 AJAX 框架,其中用到一些动态 API 调用,动静 ... -
Arc-03-32 用户事件跟踪
2012-07-05 15:25 729参照 clickstream 项目,保存到数据库 1.实现原 ... -
CXF 结合jaxb返回json字符串时,当属性为数值型字符串时,没有双引号问题
2012-06-04 14:00 2098问题:CXF 结合jaxb返回json字符串时,当属性为数值型 ... -
Arc-03-30-Postgresql 数据导出到Sqlite
2012-05-15 09:39 0用了空间数据库 PostGis,所以用了 Postgresql ... -
extjs4 有用的资源链接
2012-05-12 01:07 659对 Ext 扩展的一些小总结 http://laodaoba ... -
Arc-03-29 CXF 实现 REST 方式上传文件
2012-04-09 00:46 3069CXF 实现 REST 方式上传文件 /** ... -
Arch-03-28 Jndi 配置 Mongodb jetty 实现
2012-03-06 15:20 1623使用 springdata mongodb,直接使用 spri ... -
Arc-03-27-FTP 服务和客户端小结
2012-01-29 18:08 772尽管局域网中传输文件有 n 多方法,samba,webdav, ... -
Arc-03-26-相册图片短码编码实现
2011-12-29 17:01 911应用中需要上传用户图片,不想数据库单独维护图片的信息,想直接从 ... -
Arch-03-25-JAVA异常列表
2011-12-20 09:37 916ClassCastException 类型转换异常类 ... -
Arch-03-24- Spring Security 应用
2011-11-08 17:47 1435Spring Security 用了几次,还没有在集群环境中使 ... -
Arch-03-23- ActiveMQ 实践
2011-10-28 15:03 823ActiveMQ 到了非用不可的地步了,学习一下吧。主要用途定 ... -
Arch-03-22- 编程实现多数据源,水平切分,异种数据源
2011-10-20 17:35 815在 Spring 的框架下,通过编程实现多数据源(JDBC), ... -
Arch-03-21- Spring 中调用 Guice 中的注入
2011-10-06 20:27 882当 spring 和 guice 共同存在一个项目中,且 sp ... -
Arch-03-20- Shindig 实践
2011-10-06 16:53 779之前已经抄录了几篇网文,初步了解 shindig 功能与特性, ... -
Arch-03-19- NoSQL实践
2011-09-26 10:27 1333虽然对新技术甚为谨慎,但目前大家所做的伪 sns 的 nosq ... -
Arch-03-18- 用 Mysql-proxy 搭建 MySQL 集群
2011-09-20 10:21 882对应上篇 pgpool2 搭建 postgresql 集群,因 ... -
Arch-03-17- 用 pgpool-II 搭建 PostgreSQL 集群
2011-09-19 10:00 3015(一)方案 尽管做数据库 postgresql 集群的方式 ...
相关推荐
Arch-Linux-Install-ScriptArch_Linux_安装脚本_Arch-Linux-Installer
总的来说,“cacti-plugin-arch-2.0.tar.gz”是一个为Cacti设计的插件,旨在通过增加特定的监控和分析功能,提升网络管理者的监控体验和效率。尽管具体功能需要进一步探索,但其版本更新和与Cacti的兼容性都表明了它...
Next Generation On Demand (NGOD) Asset Architecture Comcast-SP-NGOD-ASSET-ARCH-I03-100731 Issued July 31, 2010
标题“Arch-03-08-热敏打印机集成方法”指的是关于在计算机系统或应用程序中集成热敏打印机的技术过程。热敏打印机是一种利用热敏纸进行打印的设备,广泛应用于零售、餐饮和其他需要快速、小票打印的场景。集成热敏...
变系数ARCH-M模型是时间序列分析领域的重要研究对象,其核心在于通过截面似然估计来检验模型是否具有条件异方差性(ARCH效应)。首先,我们来探讨一下条件异方差性的概念,它是指在时间序列分析中,随机变量的条件...
基于android8.1源码平台中生成的jar,亲测可用!!!!
OpenRISC是一种开源的指令集架构(ISA),它致力于提供一个简单、易于实现和使用的处理器核心,适用于广泛的嵌入式系统和应用程序。该文档是关于OpenRISC1000架构的手册,版本号为1.0,修订号为0,发布日期为2012年...
标题“Arch-03-15- Nginx+tomcat 配置负载均衡动静分离”涉及的是在Web服务器架构中使用Nginx与Tomcat的集成,通过配置实现负载均衡和动静态资源分离。这样的架构可以提高系统的可用性和响应速度,减轻后端应用...
标题中的"Python库 | arch-4.11-cp35-cp35m-win32.whl"指的是一个特定版本的Python库,名为“arch”,版本为4.11,适用于Python 3.5解释器(由"cp35"标识),且是针对32位Windows操作系统("win32")的。"cp35m"表示...
Next Generation On Demand (NGOD) Overall Architecture Comcast-SP-NGOD-GEN-ARCH-I03-100731 Issued July 31, 2010
NULL 博文链接:https://cnmqw.iteye.com/blog/1243596
python库。 资源全名:arch-4.8.0-cp27-cp27m-win32.whl
安装克隆这个仓库git clone https://github.com/jannispinter/arch-openwrt-buildroot.git构建 docker 镜像 cd arch-openwrt-buildrootdocker build -t= " arch-openwrt-buildroot:trunk " . 最后的点表示Dockerfile...
arch-snds100驱动程序是专为s3c44b0x处理器设计的一款核心驱动,用于管理和优化硬件资源的使用。s3c44b0x是一款由Samsung生产的微处理器,常用于嵌入式系统,如工业控制、移动设备和消费电子产品等。驱动程序在操作...
资源来自pypi官网。 资源全名:arch-4.17-cp39-cp39-manylinux1_x86_64.whl
**arch-box** 是一个专为Arch Linux自动化构建的项目,旨在为不同的虚拟化和容器环境提供预配置的Arch Linux镜像。它支持多种提供程序,包括 **Vagrant** 和 **VirtualBox**,同时也可能适用于 **QEMU** 等其他虚拟...
我的Arch_Linux安装步骤和日志_Arch-Linux-install-log
资源来自pypi官网。 资源全名:arch-4.9.1-cp36-cp36m-macosx_10_6_intel.whl
Arch_Linux_盒装安装媒介的小盒子_arch-media-box-typst