VMware的CloudFoundry服务获得对PostgreSQL支持

今年年初,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上下文初始化内容如:

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

META-INF/persistence.xml文件如:

\
\\u0026lt;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\"\u0026gt;\\t\u0026lt;persistence-unit name=\"myJpaManager\" transaction-type=\"RESOURCE_LOCAL\"\u0026gt;\\t\t\u0026lt;provider\u0026gt;org.hibernate.ejb.HibernatePersistence\u0026lt;/provider\u0026gt;\\t\u0026lt;properties\u0026gt;\                \u0026lt;property name=\"hibernate.dialect\" value=\"org.hibernate.dialect.PostgreSQLDialect\" /\u0026gt;\\t\t\u0026lt;property name=\"hibernate.hbm2ddl.auto\" value=\"update\" /\u0026gt;\        \u0026lt;/properties\u0026gt; \\t\u0026lt;/persistence-unit\u0026gt;\\u0026lt;/persistence\u0026gt;\
\

多亏了CloudFoundry的自动配置功能,此应用可以被直接上传到CloudFoundry,完全不用做任何修改。

\

PostgreSQL(包括MySQL和其他平台支持的服务)充分利用了Cloudfoundry提供的自动配置功能。在特定条件下,使用了PostgreSQL的某一本地Java应用可以上传到Cloudfoundry而无需修改任何一行代码

\

自动配置利用了Spring核心容器的功能,当下面两个条件都满足的情况下可以生效

\
  1. 任一给定的服务类型有且只有一个服务实现。比如,你应该只给自己的应用绑定一个关系型数据库服务(MySQL或PostgreSQL)。\
  2. 每个匹配类型对应有且只有一个bean。比如,在你的应用上下文中应该只出现一个数据源bean。\

如果满足上述需求,那Cloudfoundry将会自动拦截你的本地数据源,并使用Cloudfoundry服务来代替那些设置在Spring上下文中的值。

\

剩下唯一要做的就是积极地回答当应用被上传到云上,vmc是何时请求服务绑定的。

\

对于更加复杂的应用,Spring 3.1预计能增加一个特殊的命名空间并提供运行时概要支持。

\

查看英文原文:VMware's CloudFoundry Service Gains Support for PostgreSQL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值