2014-01-31 30 views
1

我想导出一个接口(ITestRunable)我确信我已经在context.xml和osgi.xml文件中正确链接了所有东西,但它不会工作。错误是:对“me.overlaymanagement”无法在OSGI中导出接口

应用程序上下文初始化已超时等待(objectClass的= me.overlaymanagement.testing.ITestRunable)

任何有任何想法?

代码:春天文件ITestRunable

的context.xml

<bean id="testingRunable" class="me.overlaymanagement.testing.Testing" 
init-method="startUp" destroy-method="shutDown"> 
    </bean> 

osgi.xml

<osgi:service id="testingRunable" ref="testingRunable"> 
    <osgi:interfaces> 
     <value>me.overlaymanagement.testing.ITestRunable</value> 
    </osgi:interfaces> 
</osgi:service> 

春文件导入到主系统

的context.xml

<bean id="overlaymanagementsystem" 
    class="me.overlaymanagementsystem.OverlayManagementSystem" 
    init-method="startUp" destroy-method="shutDown"> 
    <property name="testingRunable" ref="testingRunable"/> 
</bean> 

osgi.xml

<osgi:reference id="testingRunable" cardinality="1..1" 
    interface="me.overlaymanagement.testing.ITestRunable">  
</osgi:reference> 

Gettors和Settors为ITestRunable主系统内

public class OverlayManagementSystem{ 
    ... 
    protected ITestRunable testingRunable; 
    .... 
    public ITestRunable getTestRunable() { 
    return testingRunable; 
    } 

    public void setTestRunable(ITestRunable testingRunable) { 
    this.testingRunable = testingRunable; 
    } 
} 

任何人都可以看到的一个问题?

回答

0

好吧,我设法找到了这个问题。这实际上是两件事:

  1. 它没有这样做,我已经设置了ITestRunable代码所在的bean id和服务id。一旦我将服务id名称改为不同的东西,它给了我一个关于无效gettors和settors的新错误,这是下一点。

  2. 经过一番研究,我发现您的导入服务的gettor和setter必须与该服务的beans属性名称相同。注意到我的豆了:

    <属性名= “testingRunable” ... />

和了get/set定义为: “getTestRunable/setTestRunable”。改变这些getTestingRunable和setTestingRunable解决了我的问题。

我希望这可以帮助他人。