问:到目前为止,两个企业级OSGi框架中哪个更成熟: Apache Aries还是Eclipse Gemini?
我对白羊座和双子座企业的OSGi能力做了一些基础研究。我也遇到过一个类似的问题:Gemini and Apache Aries blueprint container。
我的要求和发现如下。我将非常感谢您的额外投入。
虽然Gemini Web起源于Spring DM (因此我最初更喜欢Gemini框架),但我相信Aries应该同样能够使用基于Spring Portlet MVC的Web applications.
- Gemini JPA only supports integration with EclipseLink as JPA provider. I would like to use Hibernate. Aries JPA supports Hibernate.
- Referring to [Gemini JPA limitations:](http://wiki.eclipse.org/Gemini/JPA/Documentation/Limitations) especially limitation #5: Lack of support for JTA transactions. It seems that [Aries JPA supports JTA](http://aries.apache.org/modules/jpaproject.html) ... But I have not been able to get into the details of the level of support.
看来双子座的名字是already got some capability in this area.,而白羊座的名字是yet to be released。
发布于 2012-05-30 07:19:43
同样的问题出现在我的脑海中,我得到了以下结果:
他说:双子座是基于Spring的,Spring的历史要长得多,也证明了很多东西。当我研究代码时,Gemini看起来更清晰,有更多的扩展可能性,但是我在名称空间处理程序方面遇到了问题。即使是在1.0.0版本中,它也不等待名称空间处理程序。Aries等待NS处理程序的方式与等待所需引用的方式相同。我问过OSGi的人,他们说下一个蓝图规范可能包含一个标准的NS处理程序接口,在我看来,这将会有很大帮助。我的结论是我使用Apache Aries,但这不是最终决定。我在一年中的每个季度都会回顾这个话题。我还提出了一些如何改进蓝图的建议,并将其上传到了OSGi bugzilla。我想在夏天实现这些增强功能,当我研究代码时,基于Gemini会容易得多。
2: Gemini包含一个嵌入式Tomcat。如果你只是简单地把捆绑包放入一个春分,它会工作得很好。然而,它包含了几个我想要避免的对Spring的依赖。我喜欢Spring,但我想要尽可能少的依赖。我不认为白羊座在这个话题上有任何主要的支持。直到现在,我终于开始使用与Myfaces和Jersey兼容的Jetty了。到目前为止,我还没有尝试过其他任何东西。此外,我更喜欢Jetty的配置可能性。配置包可以被定义为一个环境变量,如果您想要将集成测试作为构建生命周期的一部分来运行,那么这个环境变量会有很大帮助。如果Gemini支持更多的配置选项(比如来自捆绑包),我会考虑使用该选项。
他说:因为我喜欢使用JTA,所以我根本没有选择使用Gemini。我安静地使用了Aries JPA一段时间,我对它很满意。因为我和许多同事一起工作,所以我要对他们的效率负责。使用Aries JPA时,我遇到的问题是它不等待DataSourceFactory服务(如果在persistence.xml中定义了db连接)或DataSource服务(如果定义了jta数据源或非jta数据源)。这意味着当您使用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 blueprint名称空间处理程序配合使用。
4:如果您使用的是应用服务器,并且您确信JNDI环境先于您的包启动,那么就使用它。但是,您不能捕获修改或删除JNDI资源,因此我根本不建议在OSGi中使用它。如果你因为JPA而需要它,我可以推荐我的容器实现:),它使用标准的OSGi服务跟踪器,即使你在你的persistence.xml中使用*-data-source和osgi: service /...表达式。如果你需要一个集中配置的地方,我建议你应该查看felix-webconsole的configuration选项卡,OSGi规范的元类型和配置管理部分。如果您在Metatypes的帮助下定义了一个配置设置,那么它们将在feilix-webconsole上可用,并且通过configuration Admin API,您将能够捕获配置更改事件。我进行了测试,felix-webconsole在Equinox-Jetty pair上也能正常工作。
希望我的输入是有用的!
https://stackoverflow.com/questions/9430270
复制相似问题