我有一個服務器端應用程序,並且想要將osgi框架嵌入到動態包加載中。
假設我想公開一個QuoteImpl實現IQuote(實例化爲服務器容器引導程序/ Spring的一部分),供不同的Bundle使用。OSGI Embedded Equinox - 用於訪問未在osgi框架中實例化的pojos的包
Q1。是否有一種將服務器應用程序實例暴露給Bundle的乾淨方式? (順便說一句,因爲遺產是不可能使服務器代碼捆綁:)並且不想讓整個應用程序osgi'ed。
試圖通過服務和捆綁暴露投入IQuote。不知道我做得很好,但由於IQuote駐留在覈心應用程序項目中而不是捆綁項目,導致未解決的編譯問題失敗。有任何想法嗎?
尼爾非常感謝您回來。我真的用你的博客作爲指導。 – Slash 2012-01-11 10:01:05
偉大的博客btw。我解決了編譯問題。我有3個項目引用包(包含Iquote接口),Consumer包(使用IQuote)和Launcher項目(模仿我的應用程序服務器(不是包)並以編程方式註冊服務IQuote的實現)。當我嘗試執行context.getServiceReference(IQuoteService.class.getName())時,我在consumer bundle中爲serviceReference獲得一個NULL; 我的問題是:當然,我錯過了一些東西。實施是否需要捆綁?啓動器在我啓動框架時註冊服務(不在Activator中) – Slash 2012-01-11 10:14:18
'public static void main(String [] args){ \t .. \t FrameworkFactory frameworkFactory = ServiceLoader.load(FrameworkFactory.class).iterator()。next (); config.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA 「osgi.main」); 框架框架= frameworkFactory.newFramework(config); framework.start(); \t \t \t \t \t BundleContext context = framework.getBundleContext(); context.registerService(IQuoteService.class.getName(),new SimpleQuote(),null); \t} } – Slash 2012-01-11 11:06:15