企业OSGi框架:ApacheAries与EclipseGemini的成熟度比较

企业OSGi框架:ApacheAries与EclipseGemini的成熟度比较,osgi,enterprise,aries,Osgi,Enterprise,Aries,问题:到目前为止,两个企业OSGi框架中哪一个更成熟:ApacheAries还是EclipseGemini 我对白羊座和双子座的企业OSGi功能做了一些基础研究。 在这个问题上,我也经历了类似的过程: 我的要求和发现如下。非常感谢您的额外投入 蓝图容器:根据蓝图规范,白羊座和双子座在实现方面似乎同样成熟 Web开发(将使用SpringPortletMVC针对JSR286进行开发): 尽管Gemini Web源于Spring DM(因此我最初倾向于Gemini框架),但我相信Aries应该同样能够

问题:到目前为止,两个企业OSGi框架中哪一个更成熟:ApacheAries还是EclipseGemini

我对白羊座和双子座的企业OSGi功能做了一些基础研究。 在这个问题上,我也经历了类似的过程:

我的要求和发现如下。非常感谢您的额外投入

  • 蓝图容器:根据蓝图规范,白羊座和双子座在实现方面似乎同样成熟

  • Web开发(将使用SpringPortletMVC针对JSR286进行开发):
    尽管Gemini Web源于Spring DM(因此我最初倾向于Gemini框架),但我相信Aries应该同样能够使用基于Spring Portlet MVC的Web应用程序

  • JPA:这是我最关心的领域。虽然我最初更倾向于双子座(因为它起源于SpringDM,并得到了SpringSource社区的支持),但我觉得双子座的JPA成熟度比白羊座的JPA要低。原因:

    • Gemini JPA仅支持作为JPA提供商与EclipseLink集成。我想使用Hibernate。Aries JPA支持Hibernate
    • 特别提到限制#5:缺乏对JTA事务的支持。看来。。。但是,我还没有能够深入了解支持程度的细节
  • JNDI:我的新web应用程序需要从JBoss应用服务器内部托管的服务层调用现有会话EJB。因此,JNDI支持对于客户端层中支持OSGi的Web应用程序至关重要。
    双子座的命名似乎是错误的,而白羊座的命名则是错误的


  • 同样的问题出现在我的脑海中,我得到了以下结果:

    1:双子座是以春天为基础的,春天的过去要长得多,事实证明很多。当我查看代码时,Gemini似乎更干净了一些,具有更多的扩展可能性,但是我在名称空间处理程序方面遇到了问题。即使是1.0.0版本,它也没有等待命名空间处理程序。Aries等待NS处理程序的方式与等待所需引用的方式相同。我问过OSGi的人,他们说下一个Blueprint规范可能包含一个标准的NS处理程序API,在我看来,这会有很大帮助。我的结论是我使用ApacheAries,但这不是最终决定。我每季度都会回顾这个话题。我还提出了一些改进蓝图的建议,并将其上传到了网站。我想在夏天实现这些增强功能,当我研究代码时,基于双子座会容易得多

    2:双子座包含一个嵌入式Tomcat。如果你简单地把这些束放在春分点,效果会很好。然而,它包含了一些我想要避免的对Spring的依赖。我喜欢Spring,但我需要尽可能少的依赖性。我不认为白羊座在这个话题上有任何主要的支持。直到现在,我终于开始使用Jetty,它可以与Myfaces和Jersey配合使用。到现在为止,我还没有试过别的东西。此外,我更喜欢Jetty的配置可能性。配置捆绑包可以定义为一个环境变量,如果您希望在构建生命周期中运行集成测试,它可以提供很大帮助。如果双子座支持更多的配置选项(比如来自bundle),我会考虑使用这个选项

    3:因为我喜欢使用JTA,所以我根本没有选择使用双子座。我安静地使用了一段时间,我对它很满意。由于我与许多同事一起工作,我对他们的效率负责。对于Aries JPA,我遇到的问题是它没有等待DataSourceFactory服务(如果在persistence.xml中定义了db连接)或DataSource服务(如果定义了jta数据源或非jta数据源)。这意味着当您使用Aries JPA时,包的起始顺序很重要

    在我们使用Glassfish和JNDI之前,这并不是一个问题,因为Glassfish在我们的OSGI捆绑包之前启动了JNDI资源。当我们开始清理OSGI容器时,我们开始遇到问题,我的同事们开始花大量时间尝试获得正确的捆绑包,并开始订购

    最后,我简单地将Aries JPA打包成一个包,并重写了我不喜欢的部分。这意味着我只保留了persistence.xml解析器部分,并创建了一个自己的项目,在那里我集中精力解决了这个问题。目前它与Hibernate一起工作,我想(还没有尝试过)与Eclipselink和编译时增强的OpenJPA一起工作。我编写的容器与org.apache.aries.jpa.container.context和aries jpa blueprint命名空间处理程序配合得很好

    4:如果您使用的是应用服务器,并且您确信JNDI环境在捆绑包启动之前启动,那么请不要使用它。但是,您无法捕获修改或删除JNDI资源,因此我不建议在OSGi中使用它。如果您因为JPA而需要它,我可以建议我的容器实现:)使用标准OSGi服务跟踪器,即使您在persistence.xml中与OSGi:service/…一起使用*-data-source。。。表情。如果您需要一个中央配置位置,我建议您检查felix webconsole的配置选项卡,OSGi规范的元类型和配置管理部分。如果您在元类型的帮助下定义配置设置,它们将在feilix webconsole上可用,并且通过配置管理API,您将能够捕获配置更改事件。我在Equinox Jetty pair上进行了测试,felix webconsole也为我工作

    希望我的意见有用