VMware的CloudFoundry服務(wù)對PostgreSQL支持
今年年初,VMware宣布了CloudFoundry項目,一款平臺即服務(wù)(PAAS)開源解決方案,其預(yù)置提供對MongoDB、MySQL及Redis此類服務(wù)的支持。最近它將PostgreSQL和RabbitMQ加入到云服務(wù)列表中以便為各應(yīng)用所使用,同時也提供了一個可運(yùn)行在單個工作站上的Micro版CloudFoundry。
將PostgreSQL納入CloudFoundry還是很有趣的,因?yàn)樗且粋€非常有特色的傳統(tǒng)數(shù)據(jù)庫,其受眾較之MySQL或MongoDB的用戶截然不同。為了更好使用PostgreSQL,cloudfoundry并沒有直接使用其正常發(fā)布的版本而是在vFabric之上定制了一個版本,這在官方博客上有做解釋。(譯者注:針對云平臺對PostgreSQL做了一些優(yōu)化。)
該博客上給了一個樣例說明如何利用Spring Roo在一個Java項目中使用PostgreSQL。我們這里介紹另一種可選方案,針對的Java應(yīng)用是某個基于Spring使用了JPA的WAR。
假設(shè)你的應(yīng)用已有的Spring上下文初始化內(nèi)容如:
而META-INF/persistence.xml文件如:
多虧了CloudFoundry的自動配置功能,此應(yīng)用可以被直接上傳到CloudFoundry,完全不用做任何修改。
PostgreSQL(包括MySQL和其他平臺支持的服務(wù))充分利用了Cloudfoundry提供的自動配置功能。在特定條件下,使用了PostgreSQL的某一本地Java應(yīng)用可以上傳到Cloudfoundry而無需修改任何一行代碼。
自動配置利用了Spring核心容器的功能,當(dāng)下面兩個條件都滿足的情況下可以生效:
任一給定的服務(wù)類型有且只有一個服務(wù)實(shí)現(xiàn)。比如,你應(yīng)該只給自己的應(yīng)用綁定一個關(guān)系型數(shù)據(jù)庫服務(wù)(MySQL或PostgreSQL)。
每個匹配類型對應(yīng)有且只有一個bean。比如,在你的應(yīng)用上下文中應(yīng)該只出現(xiàn)一個數(shù)據(jù)源bean。
如果滿足上述需求,那Cloudfoundry將會自動攔截你的本地數(shù)據(jù)源,并使用Cloudfoundry服務(wù)來代替那些設(shè)置在Spring上下文中的值。
剩下***要做的就是積極地回答當(dāng)應(yīng)用被上傳到云上,vmc是何時請求服務(wù)綁定的。
對于更加復(fù)雜的應(yīng)用,Spring 3.1預(yù)計能增加一個特殊的云命名空間并提供運(yùn)行時概要支持。
查看英文原文:VMware's CloudFoundry Service Gains Support for PostgreSQL