2012-02-05 69 views
1

我想开发可以调用Java本地接口的OSGi包。我有几个问题:OSGi和Java本地接口

  1. 是否有可能开发OSGi包并放置它C包装类和JNI?是否已经开发了可以使用的例子?

  2. 是它放置在OSGi包调用放置到托管bean的Java方法可能的Java方法?

最良好的祝愿

附:还有一个问题:我怎样才能使一个简单的托管bean进入EJB?

+1

是,两者都是可能的。我已经为Apache Karaf做了这个,但我怀疑你正在使用不同的容器。你正在使用哪个容器? – 2012-02-05 15:50:34

+0

Apache Felix。我使用Netbeans。 – 2012-02-05 15:52:30

+2

我以为Netbeans是一个IDE,而不是应用程序服务器。你正在创建一个Netbeans插件吗? – 2012-02-05 15:54:43

回答

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(从里面束)如果OS是Win32和处理器类型是86

  • 的lib/libmylib1.so和lib/libmylib2.so如果操作系统是Linux和处理器类型为86

这种方法的好处是,你可以包括基于架构的各种不同的本地库,和OSGi运行时会自动选择正确的设置当前platofmr时,例如,呼叫System.loadLibrary("mylib1");

这里是一个老博客的题目是http://robertvarttinen.blogspot.co.uk/2008/12/bundle-nativecode-in-osgi-manifest.html