我正在尝试从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使用此技巧一次。