NullPointerException с динамическими модулями Spring - PullRequest
1 голос
/ 03 июня 2011

Я интегрирую OSGi Equinox, GWT как связку и Spring Dynamic Modules.Сначала я проверяю GWT-пакет без услуг, и он запускается.Теперь я хочу вызвать внешний сервис с Spring Dynamic Modules.Это мои XML-файлы для объявления и использования сервиса:

<bean name="ServicioZB" id="zbservice" class="service.ZBService"/>
<osgi:service ref="zbservice" interface="service.IZBService"/>

И:

<osgi:reference id="service">
    <osgi:interfaces>
        <value>service.IZBService</value>
    </osgi:interfaces>
</osgi:reference>

В GreetingServiceImpl у меня есть свойство zb и setter / getter:

private IZBService zb;
public IZBService getZb() {
    return zb;
}

public void setZb(IZBService zb) {
    this.zb = zb;
}
public boolean greetServer(String input, String input2) throws Exception {
    return this.zb.checkUser();
}

Если в Equinox введите «services», я смогу просмотреть все услуги и потребителей.Он показывает следующее:

{service.IZBService}={org.springframework.osgi.bean.name=zbservice, Bundle-SymbolicName=zbservice, Bundle-Version=3.0.0, service.id=56}
 Registered by bundle: zbservice_3.0.0 [56]
 Bundles using service:
 ZBGWTApp_1.0.0 [57]

Затем отображается служба, и мое приложение ZBGWTApp является потребителем.Все кажется правильным.Однако, если я отлаживаю приложение, когда я разрываю поток в строке zb.checkUser (), значение zb равно NULL.То есть сервисная ссылка не вводится, почему?

Ответы [ 2 ]

1 голос
/ 11 марта 2012

У меня та же ошибка, я решил ее, удалив вызов конструктора, Spring должен сделать это автоматически

public void start(BundleContext bundleContext) throws Exception {
    Activator.context = bundleContext;
    // NOTE vobmaniuk: do not call HelloService(), it must be created by spring. 
    // context.registerService(IHelloService.class.getName(), new
    // HelloService(), null);
}
0 голосов
/ 07 июня 2011

Ну, я решаю проблему. Только я поставил атрибут как статический и он работает !!!

...