Используя OSGi-пакет из Java веб-приложения в Tomcat

Я пытаюсь ссылаться на метод пакета 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, используя eclipse bridge, я не знаю, как получить правильный контекст среды Equinox. Когда я пытаюсь запустить его на Tomcat с помощью эквинокса, я получаю NoClassDefFound Exceptions. Я был бы признателен за любой совет, как решить эту проблему.

Заранее спасибо. Ваше здоровье, Ник

15
задан Nicolas 31 August 2011 в 13:05
поделиться