VMware的CloudFoundry服務獲得對PostgreSQL支援

來源:互聯網
上載者:User
關鍵字 name manager xml

今年年初,VMware宣佈了CloudFoundry專案,一款平臺即服務(PAAS)開源解決方案,其預置提供對MongoDB、MySQL及Redis此類服務的支援。 最近它將PostgreSQL和RabbitMQ加入到雲服務清單中以便為各應用所使用,同時也提供了一個可運行在單個工作站上的Micro版CloudFoundry。

將PostgreSQL納入CloudFoundry還是很有趣的,因為它是一個非常有特色的傳統資料庫,其受眾較之MySQL或MongoDB的使用者截然不同。 為了更好使用PostgreSQL,cloudfoundry並沒有直接使用其正常發佈的版本而是在vFabric之上定制了一個版本,這在官方博客上有做解釋。 (譯者注:針對雲平臺對PostgreSQL做了一些優化。 )

該博客上給了一個樣例說明如何利用Spring Roo在一個JAVA專案中使用PostgreSQL。 我們這裡介紹另一種可選方案,針對的JAVA應用是某個基於Spring使用了JPA的WAR。

假設你的應用已有的Spring上下文初始化內容如:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" > <property name="persistenceUnitName" value="myJpaManager" /> <property name="dataSource" ref=" dataSource"/></bean><bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id=" dataSource"> <property name="driverClassName" value="org.postgresql.Driver" /> <property name="url" value ="jdbc:postgresql://localhost/postgres" /> <property name="username" value="postgres" /> <property name=" password" value="postgres" /></bean><bean id="transactionManager" class=" org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref=" entityManagerFactory" /></bean><tx:annotation-driven transaction-manager="transactionManager" /> <coNtext:annotation-config />

而META-INF/persistence.xml檔如:

<persistence xmlns="HTTP://java.sun.com/xml/ns/persistence" xmlns:xsi="HTTP://www.w3.org/2001/ XMLSchema-instance" xsi:schemaLocation="HTTP://java.sun.com/xml/ns/persistence HTTP://java.sun.com/xml/ns/ persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="myJpaManager" transaction-type=" RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" /> <property name=" hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit></persistence>

多虧了CloudFoundry的自動設定功能,此應用可以被直接上傳到CloudFoundry,完全不用做任何修改。

PostgreSQL(包括MySQL和其他平臺支援的服務)充分利用了Cloudfoundry提供的自動設定功能。 在特定條件下,使用了PostgreSQL的某一本地JAVA應用可以上傳到Cloudfoundry而無需修改任何一行代碼。

自動設定利用了Spring核心容器的功能,當下面兩個條件都滿足的情況下可以生效:

任一給定的服務類型有且只有一個服務實現。 比如,你應該只給自己的應用綁定一個關聯式資料庫服務(MySQL或PostgreSQL)。 每個匹配類型對應有且只有一個bean。 比如,在你的應用上下文中應該只出現一個資料來源bean。

如果滿足上述需求,那Cloudfoundry將會自動攔截你的本地資料來源,並使用Cloudfoundry服務來代替那些設置在Spring上下文中的值。

剩下唯一要做的就是積極地回答當應用被上傳到雲上,vmc是何時請求服務綁定的。

對於更加複雜的應用,Spring 3.1預計能增加一個特殊的雲命名空間並提供運行時概要支援。

(責任編輯:蒙遺善)

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.