gpt4 book ai didi

java - 无法导出 OSGI 中的接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:52 26 4
gpt4 key购买 nike

我正在尝试导出一个接口(interface)(ITestRunable),我确信我已经正确链接了 context.xml 和 osgi.xml 文件中的所有内容,但它不起作用。错误是:

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

有什么想法吗?

代码:ITestRunable 的 Spring 文件

上下文.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文件

上下文.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 和 Settor

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

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

谁能看出问题吗?

最佳答案

好的,我设法找到了问题所在。实际上是两件事:

  1. 我不喜欢设置 ITestRunable 代码所在的 bean id 和服务 id。一旦我将服务 ID 名称更改为不同的名称,它就会给我一个关于无效 gettor 和 settor 的新错误,这是下一点。

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

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

和 get/set 定义为:“getTestRunable/setTestRunable”。将它们更改为 getTestingRunable 和 setTestingRunable 解决了我的问题。

我希望这对其他人有帮助。

关于java - 无法导出 OSGI 中的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com