Я пытаюсь вызвать метод комплекта OSGi из веб-приложения Java.Оба должны работать на Tomcat 7.
Я уже написал нормальное Java-приложение, которое вызывает методы из пакета OSGi, как описано на этом сайте: http://drupal.osgibook.org/node/37.
Чтобы получитьконтекст среды Equinox Я запустил его из приложения и установил пакеты изнутри.Кроме того, контекст использовался для получения ссылки на службу запущенного пакета и получения его службы.
Метод runEquinox класса EquinoxRunner:
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
public BundleContext runEquinox([...]) throws Exception {
[...]
BundleContext bundleContext = EclipseStarter.startup(new String[]{"-console"}, null);
bundleContext.installBundle("file:C:/.../plugins/myosgiclass.interface_1.0.0.201108301327.jar");
Bundle bundleTranslationImpl = bundleContext.installBundle("file:C:/.../plugins/myosgiclass.impl_1.0.0.201108301327.jar");
bundleTranslationImpl.start();
[...]
return bundleContext;
}
и invokeMethod класса ServiceRunner:
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
[...]
public Object invokeMethod(BundleContext bundleContext, Object value, [...]){
ServiceReference serviceReference = bundleContext.getServiceReference(MyOSGiClass.class.getName());
Object result = null;
if (serviceReference != null) {
MyOSGiClass myOSGiClass = (MyOSGiClass) bundleContext.getService(serviceReference);
if (myOSGiClass != null) result = myOSGiClass.method(value);
bundleContext.ungetService(serviceReference);
}
return result;
}
Теперь, когда Tomcat использует мост затмения , я не знаю, как получить правильный контекст среды Equinox.Когда я пытаюсь запустить его на Tomcat с Equinox, я получаю исключения NoClassDefFound.Буду признателен за любые советы о том, как решить эту проблему.
Большое спасибо заранее.Приветствия, Ник