2012-04-29 58 views
1

我目前正在开发一个应用程序,它具有基于JBoss 7.1上的JavaEE 6.0和基于Eclipse RCP 3.7的客户端的服务器部分。如何在JBoss和Eclipse RCP之间共享OSGi包?

对于共享API的简单OSGi包,由于版本和版本的差异,我已经遇到了麻烦。该API需要“org.osgi.framework。”用于bundle激活器,而“org.slf4j。”用于slf4j日志API。

目前我的客户是工作得很好,但JBoss的告诉我,OSGi的进口和还进口SLF4J不符合预期版...

我有一个最佳实践分享OSGi包Eclipse和JBoss之间?我是否需要回到简单的导入和导出声明,或者我能否以某种方式使用Require-Bundle?我是否需要为JBoss创建一些兼容性包以使其运行?在这里继续的最佳方式是什么?

UPDATE 我独自使用Import-Package解决了这个问题。对于像org.osgi.framework这样的依赖,使用version =“0.0”来解释它并不重要。 :-(这是不是很安全,但目前我没有看到另一种选择。有没有更好的办法?

更新2 人们也需要注意落实OSGi框架的优化版本正确。JBoss的7.1.x仅实现了OSGi 4.2,它不支持类型安全服务检索

回答

5

最佳做法是使用导入包语句,范围从您使用的最低版本到下一个主要增量

例如,如果RCP期望包的版本为1.5,并且JBoss需要1.3.6,则导入version =“[1.3.6.2)”。

The Semantic Versioning whitepaper (pdf)解释了为什么这种风格的进口是安全和明智的。

+0

我这样做就像你说的。这是更努力的维护,但它确实有效。对于org.osgi.framework,我需要使用版本0.0,因为系统包的版本也是0.0.0。 :-(但其他一切似乎都有效。 –

相关问题