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