带有Spring动态模块的NullPointerException

带有Spring动态模块的NullPointerException,spring,gwt,osgi,equinox,Spring,Gwt,Osgi,Equinox,我将OSGi Equinox、GWT集成为bundle和Spring动态模块。首先,我检查没有服务的GWT包,它运行。现在我想调用一个带有Spring动态模块的外部服务。以下是我要声明和使用服务的XML文件: <bean name="ServicioZB" id="zbservice" class="service.ZBService"/> <osgi:service ref="zbservice" interface="service.IZBService"/> &l

我将OSGi Equinox、GWT集成为bundle和Spring动态模块。首先,我检查没有服务的GWT包,它运行。现在我想调用一个带有Spring动态模块的外部服务。以下是我要声明和使用服务的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>
如果在Equinox类型的“服务”中,我可以查看所有服务和消费者。它显示了以下内容:

<osgi:reference id="service">
    <osgi:interfaces>
        <value>service.IZBService</value>
    </osgi:interfaces>
</osgi:reference>
{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]

然后,显示服务,我的应用程序zbgwtap就是消费者。一切似乎都好。但是,如果我调试应用程序,当我在zb.checkUser()行中断线程时,zb的值为NULL。也就是说,服务引用没有被注入,为什么?

好吧,我解决了这个问题。只有我把属性设置为静态,它才会运行

好吧,我解决了这个问题。只有我把属性设置为静态,它才会运行

我也有同样的错误,我通过删除构造函数调用解决了这个问题,应该由Spring自动完成

<osgi:reference id="service">
    <osgi:interfaces>
        <value>service.IZBService</value>
    </osgi:interfaces>
</osgi:reference>
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);
}

我也有同样的错误,我通过删除构造函数调用解决了它,它应该由Spring自动完成

<osgi:reference id="service">
    <osgi:interfaces>
        <value>service.IZBService</value>
    </osgi:interfaces>
</osgi:reference>
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);
}