如何在JBoss和EclipseRCP之间共享OSGi包?

如何在JBoss和EclipseRCP之间共享OSGi包?,eclipse,jboss,eclipse-plugin,osgi,jboss7.x,Eclipse,Jboss,Eclipse Plugin,Osgi,Jboss7.x,我目前正在开发一个应用程序,它有一个基于JBoss7.1上JavaEE6.0的服务器部分和一个基于EclipseRCP3.7的客户端 对于一个用于共享API的简单OSGi包,由于版本和深度的差异,我已经遇到了麻烦。该API要求bundle activator使用“org.osgi.framework.”,slf4j日志API使用“org.slf4j.” 目前,我的客户端工作得很好,但JBoss告诉我,OSGi导入的预期版本和slf4j的导入版本不适合 我想知道在Eclipse和JBoss之间共享

我目前正在开发一个应用程序,它有一个基于JBoss7.1上JavaEE6.0的服务器部分和一个基于EclipseRCP3.7的客户端

对于一个用于共享API的简单OSGi包,由于版本和深度的差异,我已经遇到了麻烦。该API要求bundle activator使用“org.osgi.framework.”,slf4j日志API使用“org.slf4j.”

目前,我的客户端工作得很好,但JBoss告诉我,OSGi导入的预期版本和slf4j的导入版本不适合

我想知道在Eclipse和JBoss之间共享OSGi包的最佳实践是什么?我是否需要回到简单的导入和导出声明,或者我是否可以以某种方式使用Require Bundle?我是否需要为JBoss创建一些兼容包才能运行它?在这里最好的方法是什么

更新 我专门用进口包装解决了这个问题。对于像org.osgi.framework这样的依赖项,使用version=“0.0”来解释它并不重要:-(这不是很安全,但目前我看不到其他选择。有更好的方法吗

更新2
还需要注意实现OSGi框架的正确验证。JBoss 7.1.x只实现了OSGi 4.2,它不支持类型安全服务检索。

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

例如,如果RCP需要软件包的1.5版本,而JBoss需要1.3.6版本,则导入version=“[1.3.6,2]”


解释为什么这种导入方式是安全和明智的。

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

例如,如果RCP需要软件包的1.5版本,而JBoss需要1.3.6版本,则导入version=“[1.3.6,2]”


解释了为什么这种导入方式是安全和明智的。

我按照您所说的那样做了。维护起来更费劲,但实际上是可行的。对于org.osgi.framework,我需要使用版本0.0,因为系统包的版本也是0.0.0-(但是其他的一切似乎都是可行的。我按照你说的那样做了。这需要更多的努力来维护,但实际上是可行的。对于org.osgi.framework,我需要使用版本0.0,因为系统捆绑包的版本也是0.0.0.:-(但是其他的一切似乎都是可行的。)。