OSGi 4.2有just been released,它用一些新的RFC更新了4.1規範。那麼,對於OSGi 4.2而言,哪些支持4.2的框架已經(或者接近),以及爲什麼應該針對4.2框架而不是4.1框架來實現新的開發呢?OSGi 4.2中有什麼新東西?
回答
在大多數情況下,OSGi的點釋放(如4.1-容易實現> 4.2)並沒有真正改變現有的行爲,所以可以肯定地說,如果你有一個依賴於4.1的應用程序,它將在4.2上運行而沒有問題。有什麼新的是,一些項目已經標準化,應該能夠實現不同OSGi引擎(如Equinox,Felix和Knopflerfish)之間更好的互操作性。實際上,雖然OSGi 4.2僅在2009年9月16日正式發佈,但其他人可以參考早期草案,因此之前版本的產品(如Equinox 3.5,Felix 1.8)已經得到了合理的支持。標準。與802.11n產品一樣,它們符合早期的草案,但預計在不久的將來它們將被證明完全符合4.2版本的要求。
那麼,4.2中有什麼新東西?
- 服務魚鉤
- 框架內設立
而且,在綱要
- 遠程服務
- 捆綁跟蹤
- 藍圖服務
服務魚鉤
的服務掛鉤API允許你拿起上發生的業務層的事件。例如,您可以在請求服務時,服務發送事件時等等。您還可以導致事件未被傳遞(例如,隱藏您無權看到的事件),但無法更改任何事件(因爲這會使傳遞的類複雜化)。服務鉤子是核心規範的一部分,所以所有的OSGi版本都需要這樣做。
框架內設立
儘管可以以編程方式從現有的Java應用程序啓動一個OSGi例如,在你這樣做的方法一直依賴於你使用的OSGi運行時。具體而言,配置項目(例如存儲瞬態數據的位置,捆綁引導委派策略應該是什麼等)都是以特定於引擎的方式定義的。這將整合由任何啓動實用程序在框架上設置的屬性。
遠程服務
遠程服務API允許OGSI服務(可能在不同的機器)虛擬機之間的通信。他們如何進行通信的確切機制(RMI,Web服務等)對提供商開放,所以它不像其他分佈式技術(如Corba),它專門規定了有線格式。顯然,分佈式服務與本地服務具有不同的語義(通信錯誤,序列化問題),如果需要,這些留給各個服務來分配。
捆綁跟蹤
就像在4.1之前的ServiceTracker的,該BundleTracker可以用來繼續其捆綁來眼去系統。這可以被動態GUI用來顯示OSGi引擎的發展狀態,而不需要任何平臺特定的知識。
藍圖服務
藍圖服務類似於彈簧,因爲它提供了用於配置束依賴注入機制。在某些方面,它類似於聲明式服務;但藍圖服務以不同的方式完成任務。另外,與聲明式服務(只能處理存在的服務)不同,藍圖服務可以預先創建一個代理佔位符,用於稍後將聯機的服務。然後調用服務代理將阻塞,直到服務可以被填充(而不是像聲明式服務那樣返回'null')。如果您對Spring IOC和類似的依賴注入感到舒服或熟悉,那麼Blueprint服務將立即可以理解。
This article詳細描述了感興趣的RFC。引用,所有之一
首先要注意 這不是一個小的釋放作爲 版本號可能建議。版本 4.2實際上比去年的R4.1版本更重要。在 一些點,我甚至會說它是 比R4版本, 更重要,因爲有一個用法變得更容易 方式,尤其是沒有 OSGi專家。
我同意,雖然一些RFC(如企業版)尚未完成。 – AlBlue 2009-09-16 19:37:15
早期的變化是highlighted here。
特別地,RFC 119 - 分佈式OSGi特徵是有趣:
將該溶液定義爲分佈式的OSGi處理,包括服務發現和獲取,並從外部環境特徵/功能的最小水平。
與EventAdmin
(41引入的)相結合,將允許對基於OSGi的分佈式服務(目前實施with ECF)
是的,遠程服務(現在稱爲分佈式OSGi)很有趣。在http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API上有一篇關於如何將遠程服務與ECF一起用於你自己的遠程服務的好書 - – AlBlue 2009-09-16 19:36:17
當引用綁定不可用時,聲明式服務實際上是否返回null?在Equinox上,即使我將模式設置爲動態模式,如果組件不能「連線」,我的組件也不會實例化。我寧願它設置爲「空」,因爲你說,所以我可以有可選的參考綁定和使用動態發現...
此外,我錯過了找到組件屬性很容易,當一個服務綁定(我必須去Bundle上下文,獲取服務引用,迭代和比較 - 不實際)。也許我錯過了一些東西。
您可以在基礎設置中設置基數=「0..1」或「0..n」聲明性規範,在這種情況下,它是可選的,因此即使依賴服務不可用,組件也可以啓動。 – AlBlue 2009-09-17 08:50:45
哦,謝謝,這很明顯,我錯過了! :) – 2009-09-17 09:30:43
- 1. NHibernate 3.0中有什麼新東西
- 2. jQuery 1.4有什麼新東西?
- 3. 什麼東西@ @指
- 4. Perl 5.12中最有趣/最有用的新東西是什麼?
- 5. 如果有東西存在,請用東西做點什麼
- 6. SCJP有沒有什麼好東西?
- 7. PHP如果有東西和東西那麼東西?
- 8. WHERE有什麼東西(CASE WHEN語句)?
- 9. android在等什麼東西
- 10. 匹配是什麼東西?
- 11. 這是什麼東西叫?
- 12. 從c#讀取excel,有什麼新東西?
- 13. javascript - 新東西
- 14. 什麼是WPF中的x:東西?
- 15. JavaScript中的這個東西是什麼?
- 16. 是什麼應用程序之間(「東西」)和Session(「東西」)
- 17. 什麼東西::東西意味着在YII?
- 18. 爲什麼在共享WebMethod裏沒有page.Master null /什麼東西?
- 19. 有人可以解釋一下:東西變量=新東西();?
- 20. 更新數據庫中的所有東西,就像mysql中的東西
- 21. 有沒有粘貼部分的貼紙有什麼東西?
- 22. 爲什麼我的sys.path中有太多東西?
- 23. 我的C代碼有什麼問題?循環中的東西?
- 24. CKEditor文件夾中的所有東西是什麼?
- 25. 這段代碼中有什麼不安全的東西?
- 26. 在Octave中有什麼東西等價於C的#include?
- 27. linux shell中的東西和`something`有什麼區別?
- 28. 做self.something =東西的目的是什麼
- 29. 與KleisliFunctor類似的東西是什麼?
- 30. 什麼東西會取代HTML和CSS?
好的總結。 +1 – VonC 2009-09-16 19:39:28
注意:這不一定是一個完整的列表,並且不涵蓋對現有服務的一些更改... – AlBlue 2009-09-16 19:39:38