2008年的5.1勞動節,SpringSource發布了策劃已久的開源應用服務器-SpringSource Application Platform。JavaEye的新聞頻道也有報道:
SpringSource 宣布發布 SpringSource Application Platform Beta
總體來說,Spring的Application Platform就是一個根據Rod Johnson自己對于Java企業應用開發的理解,自行制訂了一套應用服務器的標準,并且開發了這樣一個專用的應用服務器出來。但是Spring的應用服務器也有自己的一些特色,讓我們簡單看看:
這是Spring應用服務器的結構圖。他的底層是用Equinox這個OSGi框架來搭建的,我們知道Equinox為底層框架搭建的應用軟件還有Eclipse,他的特點是高度的模塊化,可定制化和在線的部署和卸載,以及模塊的版本管理、依賴管理等功能。
Spring在Equinox的基礎之上開發了DMK這樣一個框架,即動態模塊內核(Dynamic Module Kernel),DMK封裝了Equinox的很多底層操作,向上提供了更加方便的API和管理平臺。
在DMK之上,所有的功能統統以模塊的方式運行在DMK之上,例如Tomcat就是以模塊的方式部署在Spring應用服務器上,此外還集成了應用發布模塊、系統管理模塊等等。所有的模塊都可以以標準的方式部署到Spring應用服務器上面,具體模塊的信息,可以看看Spring應用服務器的repository目錄下面的文件。
Spring應用服務器給我的感覺和JBoss應用服務器很像。JBoss也是類似這樣的結構,JBoss最核心的底層是JBoss Microkernel,即微內核,這個MicroKernel提供了JMX的接口,而JBoss應用服務器的所有其他功能,都是通過標準的JMX來插入到MicroKernel之上的,例如Tomcat、Hibernate3、EJB、Transaction,DB Pool等等,都是標準的SAR模塊包。
他們之間比較大的不同在于Spring應用服務器底層使用的是OSGi結構來進行模塊化的管理和部署,而JBoss使用的是基于JMX的模塊化管理。使用OSGi的一大好處就是可以在線的熱部署和卸載,并且可以提供良好的模塊版本管理。
Spring應用服務器我從我初步的接觸來看,我覺得有一些比較有特色的地方:
一、輕量級和模塊化
Spring應用服務器本質上就是基于Equinox的Spring DMK,這DMK本身是很小的,在DMK上面可以部署各種各樣的功能模塊來擴展應用服務器的功能,模塊化程度非常高,內核本身是很輕量級的。
看Spring Applicaiton Platform自己的文檔上面說,如果去掉Tomcat模塊的話,啟動應用服務器只占15MB內存(能用來干啥?),其實目前Spring應用服務器并沒有提供很多功能模塊上來,只是一個web模塊、一個部署模塊和一個管理監控模塊。但是計劃在2.0版本增加更多的模塊、例如群集支持模塊、SOA模塊等等。
二、在線的熱部署和卸載
得益于Equinox,可以在服務器運行期增加功能模塊、部署新的Web應用,或者更新、卸載Web應用,所有的這些操作都可以Online進行。這恐怕是比傳統的Java應用服務器最領先的特色了。
三、庫的版本管理和依賴
jar包的版本沖突和依賴是傳統Java應用很頭疼的一個方面,Spring應用服務器提出了自己的一套庫版本管理和庫依賴管理的機制,具體的原理我還沒有仔細的研究,貌似也是利用了OSGi的功能。
總結:
Spring應用服務器和Spring框架并沒有什么直接的關系。你用其他框架開發的Web應用也可以部署到spring應用服務器上來,只是Spring應用服務器提供了很多可能你覺得不錯的功能,吸引你使用spring的應用服務器,而不是tomcat或者jboss。但是Spring應用服務器并不符合Java EE的標準,因此可以看成是一個完全無視JCP的應用服務器,也是Rod Johnson大膽甩開標準進軍應用服務器市場的嘗試。