在OSGI中使用JACORB

时间:2010-03-03 09:57:58

标签: osgi corba

我正在尝试使用OSGI-Bundle中的JACORB。我读到了一些人,他们在启动和运行时遇到了很多麻烦。你有没有人有过将JaCORB纳入OSGi-Bundle的经验?

由于 Moritz的

2 个答案:

答案 0 :(得分:3)

CORBA通常需要创建许多特定于类的代码,我怀疑JACORB是否会以类安全的方式从bundle中执行此操作(因为它无疑需要访问其他类才能实现它)。

如果你真的需要这样做,那么添加一个:

DynamicImport-Package: *

到捆绑包将为JACORB提供对(导出)捆绑包的完全访问权限。请注意,这意味着当JACORB绑定到您的特定版本的包时,它将不是动态的(即它将在​​您的包的生命周期内永久连接自己。)

您可能希望了解OSGi远程服务;有许多不同的实现通过网络提供服务;例如,Eclipse ECFApache CXF

如果您只需要通过OSGi调用客户端,那么最好将JACORB的内部副本捆绑在您的包中(这样它将看到您的包看到的内容)然后设置包的类路径:

Bundle-ClassPath: .,jacorb.jar

这样,您的客户端就可以调用远程CORBA服务,但不能(轻松)调用传入请求。另请注意,可能存在多个单例资源(例如IIOR端口),这可能意味着您只能在每个OSGi VM上使用此技巧一次。

答案 1 :(得分:0)

您是否尝试过使用系统片段?我们通过将Jacorb同时捆绑在系统片段中解决了这个问题。这有点不正统,但确实有效。

  1. 创建一个包(org.jacorb)并包装所有现有的jacorb jar。公开包裹。 这样你就可以根据需要评估jacorb类。
  2. 创建一个主机包为system.host的片段。在这里添加所有的jacorb罐子。 这是当JVM去创建ORB时它可以成功找到通常不在你的类路径上的ORB类,除非你依赖于jacorb包。
  3. 瞧!现在你的所有插件都不需要依赖jacorb,你就像使用Java System属性一样使用jacorb。