`
ryhome
  • 浏览: 44936 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Spring DM中整合CXF-DOSGi

    博客分类:
  • Web
阅读更多

Spring DM中整合CXF-DOSGi

最近有需要用到OSGi+REST+JSON的架构组合,做了一些技术验证。这里将总结的一些经验记录下来。

OSGi框架选型:

使用了Spring-DM,主要用它的服务发布功能

一、RESTful框架选型

CXFRestLetRestEasyJersey4REST框架都是JAX-RSJSR311)的实现,验证期间对它们做了一个比较

 

CXF

RestLet

RestEasy

Jersey

License

ASL2.0

LGPL

ASL2.0

GPL+CDDL

OSGi支持

Good

Ok

No

No

Spring支持

Ok

Ok

Ok

Ok

优点

轻量级框架对业务入侵小

部署包灵活

 

 

缺点

独立bundle9M

自带providerJSON数据封结构复杂

REST标识必须写到实现类上

 

License限制太多

综合考虑CXF-DOSGi满足我们的需求:License友好、支持Spring-OSGi部署服务便利、入侵性小;

二、框架搭建

由于CXF-DOSGi自带的JSON数据绑定接口有着这样那样的问题,所以需要借助其他的数据绑定接口。Jackson是一个不错的选择。(为什么不是支持非OSGi版本CXFjettison,是因为jettison没有Java对象和JSON数据相互转化的接口,使用起来没有Jackson便利)。

Spring-DM中集成DOSGi非常简单,只要在Spring-DM的加载plan文件中加上DOSGiJackson3bundlecoremapperjaxrs),整个框架就支持RESTful了。

三、发布RESTful服务

1.定义服务接口。RESTful服务接口的定义和其他服务接口定义没有太大的区别,只是在接口类加上RESTful的声明

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
 
@Path("greeter")
public interface GreeterService {
 
        @GET
        @Path("greeting/{name}")
    GreeterInfo greetMe(@PathParam("name") String name) throws GreeterException;
 
}

 

2.实现此接口

3.发布服务。同发布其他spring-osgi服务方式一样,DOSGi支持spring-osgi的方式发布RESTful服务,只需要在服务注册时设置DOSGi的相关属性就将此服务同时注册到CXF

<beans xmlns:osgi="...">
  <osgi:service interface="org.apache.cxf.dosgi.samples.springdm.DinnerService">
    <osgi:service-properties>
      <entry key="service.exported.interfaces" value="*" />
    </osgi:service-properties>
    
    <bean class="org.apache.cxf.dosgi.samples.springdm.impl.DinnerServiceImpl" />
  </osgi:service>                     
</beans>

 

注:相关属性设置参考http://cxf.apache.org/distributed-osgi-reference.html,但要注意的是在DOSGi1.1时属性项“org.apache.cxf.rs.provider”说明是错误的,不应该是boolean值而是自定义的provider的类名。

4.使用自定义的JSON数据绑定接口。之前说到的“org.apache.cxf.rs.provider”设置是为了使用Jackson的接口。如果使用自定义的provider还需要在服务发布bundle中导入org.codehaus.jackson.jaxrs的包(MANIFEST.MFImport-package

<beans xmlns:osgi="...">
  <osgi:service interface="org.apache.cxf.dosgi.samples.springdm.DinnerService">
    <osgi:service-properties>
      <entry key="service.exported.interfaces" value="*" />
<entry key=" org.apache.cxf.rs.provider" value=" org.codehaus.jackson.jaxrs. JacksonJsonProvider" />
    </osgi:service-properties>
    
    <bean class="org.apache.cxf.dosgi.samples.springdm.impl.DinnerServiceImpl" />
  </osgi:service>                     
</beans>

 

 

分享到:
评论

相关推荐

    cxf-dosgi-ri-singlebundle-distribution-1.4.0.jar

    cxf-dosgi-ri-singlebundle-distribution-1.4.0.jar

    cxf-dosgi-ri-multibundle-distribution-1.5.0-dir

    标题 "cxf-dosgi-ri-multibundle-distribution-1.5.0-dir" 暗示我们正在讨论的是Apache CXF项目的一个版本,更具体地说,是其分布式对象服务网关接口(DOSGi)运行时实现的多捆绑库分发版,版本号为1.5.0。...

    cxf-core-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-core-3.0.1.jar; 赠送原API文档:cxf-core-3.0.1-javadoc.jar; 赠送源代码:cxf-core-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-core-3.0.1.pom; 包含翻译后的API文档:cxf-core-3.0.1-...

    springMVC整合cxf所需的jar包

    总之,Spring MVC和CXF的整合涉及到多个层次的技术,从Web服务的创建、配置到集成到Spring的MVC框架中,每个环节都需要细心处理。正确的jar包配置是成功整合的关键,只有确保所有必要的依赖都已引入,才能使得Web...

    cxf-rt-rs-client-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-rs-client-3.0.1.jar; 赠送原API文档:cxf-rt-rs-client-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-rs-client-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-rs-client-3.0.1.pom; 包含...

    cxf-dosgi:Apache CXF的镜像

    CXF DOSGi 为提供基于CXF的分发提供程序。 CXF DOSGi允许轻松发布和使用SOAP和REST服务,而无需使用CXF蓝图扩展或使用Java代码发布服务。 因此,这是在OSGi中将CXF与声明式服务一起使用的推荐方法。 查看示例以...

    cxf-rt-frontend-jaxrs-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-jaxrs-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxrs-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxrs-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxrs...

    cxf-rt-transports-http-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-transports-http-3.0.1.jar; 赠送原API文档:cxf-rt-transports-http-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-transports-http-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-transports-...

    cxf-rt-frontend-simple-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-simple-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-simple-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-simple-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-...

    cxf-rt-frontend-jaxws-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-jaxws-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxws-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxws-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxws...

    cxf-rt-bindings-soap-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-bindings-soap-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-soap-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-soap-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-soap-...

    以 OSGi 包的形式开发和部署 Web 服务

    - **cxf-dosgi**:这是Apache CXF项目的一个子项目,专门用于支持OSGi环境下Web服务的开发和部署。它提供了将Web服务封装为OSGi包的能力,并支持这些服务的分发。 #### 三、开发流程 1. **环境搭建**:安装Eclipse...

    Spring4.3整合CXF3.0.4需要使用的Jar包--亲测可用

    Spring4.3整合CXF3.0.4需要使用的Jar包,Spring4.0以上需要使用CXF3.0以上的jar包才可以,之前使用CXF2.7会报各种错误,cxf-core-3.0.4.jar,cxf-rt-bindings-soap-3.0.4.jar

    apache-cxf-3.3.3.zip

    4. **模块化设计**:CXF由多个模块组成,开发者可以根据项目需求选择使用,如 CXF-DOSGi(用于OSGi环境)、CXF-RTC(实时通信)和CXF-WS-Addressing(Web服务寻址)等。 5. **测试工具**:CXF提供了一些工具,如CXF...

    apache-cxf-3.1.1跟3.1.6所有jar包

    在"apache-cxf-3.1.1跟3.1.6所有jar包"中,每个版本通常会包含一组核心库和扩展库,这些库分别负责不同的功能模块。例如,`cxf-3.1.6`和`cxf-3.1.1`目录下的jar文件可能包括了以下组件: - **cxf-api.jar**:包含...

    apache-cxf-2.5.2

    这个"apache-cxf-2.5.2"版本是该框架的一个特定发行版,发布于2011年,包含了CXF框架的所有组件和依赖项,供开发者在他们的项目中使用。 Apache CXF的主要特性包括: 1. **Web服务实现**:CXF允许开发者使用JAX-WS...

    apache-cxf-3.1.6所有jar包

    在“apache-cxf-3.1.6所有jar包”中,lib目录下的jar文件涵盖了这些组件的实现。这些文件通常包括以下几类: - **CXF的核心库**:如cxf-api.jar、cxf-rt-core.jar等,提供了CXF的基础框架和核心功能。 - **JAX-WS和...

    apache-cxf-2.2.4

    在"apache-cxf-2.2.4"中,包含了以下核心组件和特性: 1. **SOAP支持**:CXF 支持SOAP 1.1和1.2协议,可以处理各种复杂的SOAP消息结构,包括WSDL(Web服务描述语言)的第一和第二版本。 2. **RESTful服务**:CXF也...

    cxf-core-3.1.16.jar

    cxf-core-3.1.16版本jar包,用于java开发使用

    CXF-3.1.11jar包

    在“apache-cxf-3.1.11”这个压缩包中,通常会包含以下组件: 1. `cxf-api.jar`:CXF的核心API库。 2. `cxf-rt-frontend-jaxws.jar`:用于创建和消费SOAP服务的实现。 3. `cxf-rt-frontend-jaxrs.jar`:支持JAX-RS...

Global site tag (gtag.js) - Google Analytics