osgi - 企业 OSGi 框架 : Maturity comparison Apache Aries vs. Eclipse Gemini

标签 osgi enterprise aries

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

7年前关闭。




Improve this question




问:截至今天,两个 Enterprise OSGi 框架中哪个更成熟:Apache Aries 还是 Eclipse Gemini?

我对 Aries 和 Gemini Enterprise OSGi 功能做了一些基础研究。
我也经历过类似的这个问题:Gemini and Apache Aries blueprint container .

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

  • 蓝图容器:Aries 和 Gemini 在实现蓝图规范方面似乎同样成熟。
  • Web 开发(将使用 Spring Portlet MVC 针对 JSR 286 进行开发):
    尽管 Gemini Web 源于 Spring DM(因此我最初更喜欢 Gemini 框架),但我相信 Aries 应该同样能够处理基于 Spring Portlet MVC 的 Web 应用程序。
  • JPA:这是我最关心的领域。虽然我最初更倾向于 Gemini(由于它源于 Spring DM 和活跃的 SpringSource 社区的支持),但我觉得 Gemini JPA 的成熟度与 Aries JPA 相比相当低。原因:
  • Gemini JPA 仅支持与作为 JPA 提供者的 EclipseLink 集成。我想使用休眠。 Aries JPA 支持休眠。
  • 引用 Gemini JPA limitations:特别是限制 #5:缺乏对 JTA 事务的支持。好像Aries JPA supports JTA ...但我无法深入了解支持级别的详细信息。
  • JNDI:我的新 Web 应用程序需要从托管在 JBoss 应用程序服务器内的服务层调用现有的 session EJB。因此,JNDI 支持对于我在客户端层中启用 OSGi 的 Web 应用程序至关重要。
    似乎双子座命名是yet to be released而白羊座有already got some capability in this area.
  • 最佳答案

    我想到了同样的问题,我得到了以下结果:

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

    2:Gemini 包含一个嵌入式 Tomcat。如果您只是将捆绑包放入春分点,则效果很好。但是,它包含我想避免的对 Spring 的几个依赖项。我喜欢 Spring,但我希望尽可能少地依赖。我不认为白羊座在这个话题上有任何主要的支持。直到现在,我终于开始使用与 Myfaces 和 Jersey 一起使用的 Jetty。到目前为止,我还没有尝试过其他任何东西。我也更喜欢 Jetty 的配置可能性。配置包可以定义为一个环境变量,如果您想在构建生命周期中运行集成测试,它会很有帮助。如果 Gemini 支持更多的配置选项(比如来自捆绑包),我会考虑转向那个。

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

    直到我们使用 Glassfish 和 JNDI 才成为问题,因为 Glassfish 在我们的 OSGI 包之前启动了 JNDI 资源。当我们转移到清理 OSGI 容器时,我们开始遇到问题,我的同事开始花费大量时间来尝试让正确的捆绑包开始订购。

    最后,我只是将 Aries JPA 捆绑到一个包中,并重写了我不喜欢的部分。这意味着我只保留了 persistence.xml 解析器部分并在 http://everit.org/osgi/jpa/org.everit.osgi.jpa.container/index.html 创建了一个自己的项目。我集中精力没有这个麻烦。目前它可以与 Hibernate 一起使用,我猜(还没有尝试过)与 Eclipselink 和编译时间增强的 OpenJPA 一起使用。我编写的容器适用于 org.apache.aries.jpa.container.context 和 aries jpa 蓝图命名空间处理程序。

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

    希望我的意见有用!

    关于osgi - 企业 OSGi 框架 : Maturity comparison Apache Aries vs. Eclipse Gemini,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9430270/

    相关文章:

    Java自定义注释不可见

    ios - Apple 如何发现企业应用程序分布在公司之外?

    apache-karaf - Karaf OSGI Aries 蓝图 ClassCastException : Impl cannot be cast to Interface

    xml - 如何组织一个大的karaf blueprint.xml?

    java - 如何使用 Buckminster 和 AspectJ 构建包含方面的插件?

    eclipse - Equinox 中的 LogService 和 LogReaderService 如何协同工作?

    java - Felix ConfigAdmin(文件)|我的文件需要包含 service.pid 吗?

    android - Android 上的企业移动 SSO

    ios - 我们可以使用企业帐户进行苹果 Beta 测试,我们没有开发者帐户吗?

    database - 在 ARIES 恢复方法中重复历史记录有什么好处?