2009-09-16 83 views

回答

12

在大多數情況下,OSGi的點釋放(如4.1-容易實現> 4.2)並沒有真正改變現有的行爲,所以可以肯定地說,如果你有一個依賴於4.1的應用程序,它將在4.2上運行而沒有問題。有什麼新的是,一些項目已經標準化,應該能夠實現不同OSGi引擎(如EquinoxFelixKnopflerfish)之間更好的互操作性。實際上,雖然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服務將立即可以理解。

+0

好的總結。 +1 – VonC 2009-09-16 19:39:28

+0

注意:這不一定是一個完整的列表,並且不涵蓋對現有服務的一些更改... – AlBlue 2009-09-16 19:39:38

0

This article詳細描述了感興趣的RFC。引用,所有之一

首先要注意 這不是一個小的釋放作爲 版本號可能建議。版本 4.2實際上比去年的R4.1版本更重要。在 一些點,我甚至會說它是 比R4版本, 更重要,因爲有一個用法變得更容易 方式,尤其是沒有 OSGi專家。

+0

我同意,雖然一些RFC(如企業版)尚未完成。 – AlBlue 2009-09-16 19:37:15

0

早期的變化是highlighted here

特別地,RFC 119 - 分佈式OSGi特徵是有趣:

將該溶液定義爲分佈式的OSGi處理,包括服務發現和獲取,並從外部環境特徵/功能的最小水平。

EventAdmin(41引入的)相結合,將允許對基於OSGi的分佈式服務(目前實施with ECF

+0

是的,遠程服務(現在稱爲分佈式OSGi)很有趣。在http://wiki.eclipse.org/Getting_Started_with_Using_the_ECF_Remote_Services_API上有一篇關於如何將遠程服務與ECF一起用於你自己的遠程服務的好書 - – AlBlue 2009-09-16 19:36:17

0

當引用綁定不可用時,聲明式服務實際上是否返回null?在Equinox上,即使我將模式設置爲動態模式,如果組件不能「連線」,我的組件也不會實例化。我寧願它設置爲「空」,因爲你說,所以我可以有可選的參考綁定和使用動態發現...

此外,我錯過了找到組件屬性很容易,當一個服務綁定(我必須去Bundle上下文,獲取服務引用,迭代和比較 - 不實際)。也許我錯過了一些東西。

+0

您可以在基礎設置中設置基數=「0..1」或「0..n」聲明性規範,在這種情況下,它是可選的,因此即使依賴服務不可用,組件也可以啓動。 – AlBlue 2009-09-17 08:50:45

+0

哦,謝謝,這很明顯,我錯過了! :) – 2009-09-17 09:30:43