【发布时间】:2011-01-23 03:11:56
【问题描述】:
我正在尝试使用来自 am OSGI-Bundle 的 JACORB。我读到了一些人,他们在启动和运行时遇到了很多麻烦。有没有人有任何将 JaCORB 包含到 OSGi-Bundle 中的经验?
谢谢 莫里茨
【问题讨论】:
我正在尝试使用来自 am OSGI-Bundle 的 JACORB。我读到了一些人,他们在启动和运行时遇到了很多麻烦。有没有人有任何将 JaCORB 包含到 OSGi-Bundle 中的经验?
谢谢 莫里茨
【问题讨论】:
CORBA 通常需要创建大量特定于类的代码,我怀疑 JACORB 是否会以类安全的方式从包中执行此操作(因为毫无疑问,它需要访问其他类才能实现)。
如果你真的需要这样做,那么添加一个:
DynamicImport-Package: *
到捆绑包将赋予 JACORB 对您(导出的)捆绑包的完全访问权限。请注意,这意味着当 JACORB 绑定到您的特定版本的包时,它不会是动态的(即,它将在您的捆绑包的整个生命周期内永久连接自己)。
您可能想查看 OSGi 远程服务;有许多不同的实现通过网络提供服务;例如,Eclipse ECF 或 Apache CXF。
如果您只需要通过 OSGi 调用客户端,那么最好将 JACORB 的内部副本捆绑到您的捆绑包中(这样它就会看到您的捆绑包看到的内容),然后使用以下命令设置捆绑包的类路径:
Bundle-ClassPath: .,jacorb.jar
这样,您的客户端将能够调用远程 CORBA 服务,但不能(轻松)传入请求。另请注意,可能有许多单例资源(例如 IIOR 端口),这可能意味着您只能在每个 OSGi VM 上使用此技巧一次。
【讨论】:
您是否尝试过使用系统片段。我们通过将 Jacorb 放在包和系统片段中解决了这个问题。这有点不正统,但确实有效。
瞧!现在您的所有插件都不需要依赖 jacorb,您可以像使用 Java System 属性一样使用 jacorb。
【讨论】: