我正在使用felix osgi + ds + weld cdi + pax cdi。所以,我有以下服務:OSGI DS:聲明式服務無xml文件工作
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.ServiceScope;
@Component(
immediate = false,
property={"label=stub"},
scope=ServiceScope.PROTOTYPE
)
public class ServiceImpl implements ServiceI{
@Override
public String getMyString() {
Component t=null;
return "This is my string:"+t;
}
}
要生成我用maven-捆插件ds.xml文件,因爲我知道這是產生DS XML文件的現代生活方式。所以一切似乎都起作用。 Ds XML文件由maven插件生成並放入OSGI-INF。我決定檢查felix將如何刪除這個ds.xml文件。所以我刪除了這個xml文件並清理了osgi緩存。結果令我非常驚訝。該服務仍然有效併成功注入。我只是收到消息:未找到組件描述符條目'OSGI-INF/.... xml'。除此之外,我認爲編譯後刪除了@Component註解。這就是爲什麼我沒有在我的osgi中安裝org.osgi.service.component包。然而,一切工作正常,所有捆綁解決。
所以問題 -
- 爲什麼不xml文件DS服務工作?
- 爲什麼我的osgi框架不需要
org.osgi.service.component.annotations.Component
? Felix捆綁包有包,但不包含org.osgi.service.component.annotations.Component
註釋。
謝謝你的回答。我檢查了三次!我刪除了jar裏面。證明非常簡單 - osgi框架給了我警告。你可以嘗試一下自己。 –
自2004年以來我一直在使用OSGi,我不需要嘗試。我不知道你到底在做錯什麼,但我保證DS不能沒有XML。 –
那麼,爲什麼OSGI會給我這個信息呢? –