【问题标题】:Using JACORB in OSGI在 OSGI 中使用 JACORB
【发布时间】:2011-01-23 03:11:56
【问题描述】:

我正在尝试使用来自 am OSGI-Bundle 的 JACORB。我读到了一些人,他们在启动和运行时遇到了很多麻烦。有没有人有任何将 JaCORB 包含到 OSGi-Bundle 中的经验?

谢谢 莫里茨

【问题讨论】:

    标签: osgi corba


    【解决方案1】:

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

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

    DynamicImport-Package: *
    

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

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

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

    Bundle-ClassPath: .,jacorb.jar
    

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

    【讨论】:

      【解决方案2】:

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

      1. 创建一个包 (org.jacorb) 并包装所有现有的 jacorb jar。暴露包裹。 这样您就可以在需要时对 jacorb 课程进行评估。
      2. 创建一个片段,其中主机包是 system.host。在这里也添加所有的 jacorb 罐子。 因此,当 JVM 去​​创建 ORB 时,它可以成功找到 ORB 类,除非您依赖 jacorb 包,否则该类通常不会出现在您的类路径中。

      瞧!现在您的所有插件都不需要依赖 jacorb,您可以像使用 Java System 属性一样使用 jacorb。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        • 2014-02-15
        • 2017-12-31
        相关资源
        最近更新 更多