Родной интерфейс OSGi и Java - PullRequest
1 голос
/ 05 февраля 2012

Я хочу разработать пакет OSGi, который может вызывать интерфейс Java Native.У меня есть несколько вопросов:

  1. Можно ли разработать комплект OSGi и поместить в него классы обертки C и JNI?Есть ли уже разработанный пример, который я могу использовать?

  2. Возможно ли, чтобы java-методы, помещенные в комплект OSGi, вызывали java-методы, помещенные в управляемый компонент?

С наилучшими пожеланиями

PS Еще один вопрос: как я могу превратить один простой управляемый компонент в EJB?

1 Ответ

1 голос
/ 26 апреля 2015

Вы можете сделать это довольно легко и очень переносимо на разных платформах, включив заголовок Bundle-NativeCode в манифест пакета.

Например:

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

Willзагрузить

  • lib / mylib1.dll и lib / mylib2.dll (из внутри пакета), если ОС Win32, а тип процессора x86

или

  • lib / libmylib1.so и lib / libmylib2.so, если ОС Linux и тип процессора x86

Красота этого подхода заключается в том, чтоВы можете включать различные собственные библиотеки на основе архитектуры, и среда выполнения OSGi автоматически выберет правильный набор для текущего platofmr, когда вы, например, вызовете System.loadLibrary("mylib1");

Вот старый блог на эту тему:http://robertvarttinen.blogspot.co.uk/2008/12/bundle-nativecode-in-osgi-manifest.html

...