2012-11-18 166 views
1

我正在開發基於Eclipse 4應用程序平臺的RCP應用程序。 我的應用程序由幾個自己的OSGi捆綁包實現爲聲明性服務。現在我想使用IEventBroker服務,我可以在我的應用程序中很好地使用它。在osgi包中使用Eclipse 4 IEventBroker

但是我可以在單獨的捆綁包中使用IEventBroker服務嗎?作爲注射領域的服務無法正常工作:

@Inject IEventBroker eventBroker; 

而且在我的課的構造函數注射服務不也行:

@Inject 
public TestUserService(IEventBroker eventBroker) { 
.. 
} 

注入eventBroker是每次NULL。一般情況下,自己的OSGi包中是否可以使用IEventBroker?我必須將所需的插件添加到我的包中嗎?是否有另一種方法可以將這些服務集成到自己的OSGi包中?

+0

[Eclipse RCP 4通過聲明式服務使用捆綁包](http:// stackoverflow。com/questions/13435524/eclipse-rcp-4-use-bundle-via-declarative-service) –

+2

請不要轉發問題。你有三個基本相同的問題。至少要鏈接到以前的問題,以便其他人可以看到上下文。 –

回答

1

@Inject不適用於純捆綁。您需要使用Activator或像Blueprint或DS這樣的依賴注入機制。

因此,嘗試使用上述機制之一查找IEventBorker作爲OSGi服務並將其注入到您的類中。

1

我知道,回答這個問題已經有點晚了,但我也很努力。 我能夠在Tom Schindele(fx)clipse)和Lars vogel(vogella turials,例如the EventAdmin tutorial)的幫助下解決它。

我後來suggested an update of this tutorial拉爾斯,他可能我的調查結果納入他的教程(我不知道他是否已經做到了,雖然)

在短期內,需要集成以下額外束(見拉斯沃格爾爲其他教程)到你的程序:

  • org.eclipse.e4.core.contexts
  • org.eclipse.e4.ui.servi CES
  • org.eclipse.e4.ui.di

此外,我需要改變的事件捕捉方法註釋了一下:

@Inject handleSomething(@Optional @EventTopic("foo") Object bar) {...} 

,而不是

@Inject @Optional handleSomething(@UIEventTopic("foo") Object bar) {...} 

請注意,由於我不想使用e4,而不是JavaFX,因此您可能仍需要se UIEventTopic,而我需要切換到簡單的EventTopic - 這會導致限制警告:-(

我希望您仍然可以參與其中,並且可以使用它!

+0

我也使用e(fx)clipse,即使在添加這些包之後,我也面臨同樣的問題。它們被添加爲試圖使用IEventBroker的捆綁包中的必需捆綁包。但是,代理始終爲空。你有沒有做其他事情來讓你的課堂上有注射劑? –