我正在尝试导出接口(ITestRunable),我确定我已经正确链接了context.xml和osgi.xml文件中的所有内容,但它无法正常工作。错误是:
“ me.overlaymanagement”的应用程序上下文初始化已超时等待(objectClass = me.overlaymanagement.testing.ITestRunable)
有任何想法吗?
代码:ITestRunable的Spring文件
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>
Spring文件导入到主系统
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>
主系统中ITestRunable的Gettor和Settors
public class OverlayManagementSystem{
...
protected ITestRunable testingRunable;
....
public ITestRunable getTestRunable() {
return testingRunable;
}
public void setTestRunable(ITestRunable testingRunable) {
this.testingRunable = testingRunable;
}
}
谁能看到一个问题?
最佳答案
好的,所以我设法找到了问题。实际上有两件事:
它不喜欢我在ITestRunable代码所在的位置设置了bean ID和服务ID。一旦将服务ID名称更改为其他名称,它就给我带来了有关无效的gettor和settor的新错误,这是下一步。
经过一番研究后,我发现导入服务的getter和setter必须与该服务的bean属性名称相同。在我的bean中注意到:
和获取/设置被定义为:“ getTestRunable / setTestRunable”。将它们更改为getTestingRunable和setTestingRunable为我解决了这个问题。
我希望这对其他人有帮助。