【问题标题】:OSGi and Java Native InterfaceOSGi 和 Java 原生接口
【发布时间】:2012-02-27 08:43:02
【问题描述】:

我想开发可以调用Java Native 接口的OSGi bundle。我有几个问题:

  1. 是否可以开发 OSGi 包并将 C 包装类和 JNI 放入其中?是否有已经开发的示例可以使用?

  2. 是否有可能放置在 OSGi 包中的 java 方法调用放置在托管 bean 中的 java 方法?

最好的祝福

附:还有一个问题:如何将一个简单的托管 bean 变成 EJB?

【问题讨论】:

  • 是的,两者都是可能的。我已经为 Apache Karaf 完成了此操作,但我怀疑您使用的是不同的容器。您使用的是哪个容器?
  • 阿帕奇费利克斯。我使用 Netbeans。
  • 我认为 Netbeans 是一个 IDE,而不是应用服务器。您正在创建 Netbeans 插件吗?

标签: java netbeans java-native-interface osgi osgi-bundle


【解决方案1】:

通过在捆绑清单中包含 Bundle-NativeCode 标头,您可以很容易地以一种非常便携的方式跨平台执行此操作。

例如:

Bundle-NativeCode: lib/mylib1.dll ; lib/mylib2.dll ;
  osname=Win32 ;
  processor=x86,
  lib/libmylib1.so ; lib/libmylib2.so ;
  osname=linux;
  processor=x86

将加载

  • lib/mylib1.dll 和 lib/mylib2.dll(来自 inside 包)如果操作系统是 Win32 并且处理器类型是 x86

  • lib/libmylib1.so 和 lib/libmylib2.so 如果操作系统是 Linux 并且处理器类型是 x86

这种方法的美妙之处在于,您可以根据架构包含各种不同的原生库,并且当您调用System.loadLibrary("mylib1");时,OSGi 运行时会自动为当前的 platofmr 选择正确的集合。

这是一个关于该主题的旧博客:http://robertvarttinen.blogspot.co.uk/2008/12/bundle-nativecode-in-osgi-manifest.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-22
    • 2015-08-28
    • 2014-11-21
    • 2011-05-17
    • 1970-01-01
    • 2010-10-15
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多