在建设银行网站上能看到自己贷款么,传奇类游戏网站,重庆网站建设小能手,做网站怎么别人搜不出来如果要试用Cloud Foundry #xff0c;最简单的方法是下载出色的PCF开发人员或在Pivotal Web Services站点上创建试用帐户。 文章的其余部分假定您已经安装了Cloud Foundry#xff0c;并且对Cloud Foundry有较高的了解。 这篇文章的目的是列出将Java应用程序集成到服务实例中… 如果要试用Cloud Foundry 最简单的方法是下载出色的PCF开发人员或在Pivotal Web Services站点上创建试用帐户。 文章的其余部分假定您已经安装了Cloud Foundry并且对Cloud Foundry有较高的了解。 这篇文章的目的是列出将Java应用程序集成到服务实例中的所有选项–该演示使用mysql作为示例服务进行集成但是这种方法足够通用。 应用概述 该应用程序是一个相当简单的Spring-Boot应用程序它是一个REST服务它公开了三种域类型及其之间的关系代表了大学–课程教师和学生。 域实例将保存到MySQL数据库中。 如果您想继续前进可以在github上找到整个源代码和方法。 要在本地尝试该应用程序请首先在具有自制软件的Mac OSX盒子上安装本地mysql服务器数据库然后可以运行以下命令集 brew install mysqlmysql.server start
mysql -u root
# on the mysql prompt: CREATE USER univadminlocalhost IDENTIFIED BY univadmin;
CREATE DATABASE univdb;
GRANT ALL ON univdb.* TO univadminlocalhost; 在cf-db-services-sample-auto下调出Spring-Boot mvn spring-boot:run 带有示例数据的端点将在http// localhost8080 / courses上提供。 在Cloud Foundry上尝试此应用程序 如果您在本地运行PCF Dev的安装则可以通过以下方式尝试部署应用程序 cf api api.local.pcfdev.io --skip-ssl-validation
cf login # login with admin/admin credentials 创建一个Mysql服务实例 cf create-service p-mysql 512mb mydb 并推送应用 manifest.yml提供了应用程序与服务实例的绑定 cf push 端点应该位于http://cf-db-services-sample-auto.local.pcfdev.io/courses 服务连通性的方法 现在我们有了一个可以在本地运行并在示例本地Cloud Foundry上运行的应用程序这些就是连接到服务实例的方法。 方法1 –不执行任何操作让Java buildpack处理连接详细信息 cf-db-services-sample-auto项目中演示了这种方法。 在这里已经使用Spring Boot指定了到本地数据库的连接如下所示 ---spring:jpa:show-sql: truehibernate.ddl-auto: nonedatabase: MYSQLdatasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost/univdb?autoReconnecttrueuseSSLfalseusername: univadminpassword: univadmin 使用Java Buildpack将此应用程序推送到Cloud Foundry时一个名为java-buildpack-auto-reconfiguration的组件被注入到应用程序中该组件根据运行时服务绑定重新配置与服务的连接。 方法2 –禁用自动重新配置并使用运行时属性 cf-db-services-sample-props项目中演示了此方法。 当服务绑定到应用程序时在键“ VCAP_SERVICES”下将一组环境属性注入到应用程序中。 对于此特定服务该条目看起来类似于以下几行 VCAP_SERVICES: {p-mysql: [{credentials: {hostname: mysql.local.pcfdev.io,jdbcUrl: jdbc:mysql://mysql.local.pcfdev.io:3306/cf_456d9e1e_e31e_43bc_8e94_f8793dffdad5?user**\u0026password***,name: cf_456d9e1e_e31e_43bc_8e94_f8793dffdad5,password: ***,port: 3306,uri: mysql://***:***mysql.local.pcfdev.io:3306/cf_456d9e1e_e31e_43bc_8e94_f8793dffdad5?reconnecttrue,username: ***},label: p-mysql,name: mydb,plan: 512mb,provider: null,syslog_drain_url: null,tags: [mysql]}]} 原始的json使用起来有点笨拙但是Spring Boot会自动将此数据转换为一组扁平的属性如下所示 vcap.services.mydb.plan: 512mb,
vcap.services.mydb.credentials.username: ******,
vcap.services.mydb.credentials.port: ******,
vcap.services.mydb.credentials.jdbcUrl: ******,
vcap.services.mydb.credentials.hostname: ******,
vcap.services.mydb.tags[0]: mysql,
vcap.services.mydb.credentials.uri: ******,
vcap.services.mydb.tags: mysql,
vcap.services.mydb.credentials.name: ******,
vcap.services.mydb.label: p-mysql,
vcap.services.mydb.syslog_drain_url: ,
vcap.services.mydb.provider: ,
vcap.services.mydb.credentials.password: ******,
vcap.services.mydb.name: mydb, 鉴于此可以通过以下方式在Spring Boot应用程序中指定与数据库的连接–在application.yml文件中 spring:datasource:url: ${vcap.services.mydb.credentials.jdbcUrl}username: ${vcap.services.mydb.credentials.username}password: ${vcap.services.mydb.credentials.password} 不过有一个小问题是由于我现在已明确控制指定服务连接的控制因此必须禁用运行时java-buildpack-auto-reconfiguration这可以通过清单元数据来完成 ---
applications:- name: cf-db-services-sample-propspath: target/cf-db-services-sample-props-1.0.0.RELEASE.jarmemory: 512Menv:JAVA_OPTS: -Djava.security.egdfile:/dev/./urandomSPRING_PROFILES_ACTIVE: cloudservices:- mydbbuildpack: https://github.com/cloudfoundry/java-buildpack.gitenv:JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: {enabled: false} 方法3 –使用Spring Cloud连接器 第三种方法是使用出色的Spring Cloud Connectors项目并且指定服务连接的配置如下所示并在cf-db-services-sample-connector子项目中进行了演示 Configuration
Profile(cloud)
public class CloudFoundryDatabaseConfig {Beanpublic Cloud cloud() {return new CloudFactory().getCloud();}Beanpublic DataSource dataSource() {DataSource dataSource cloud().getServiceConnector(mydb, DataSource.class, null);return dataSource;}
}利弊 这些是每种方法的利弊 方法 优点 缺点 方法1 –让Buildpack处理 1.简单可以在本地运行的应用程序无需更改即可在云上运行 1.神奇的–对于不了解底层流程的人自动重新配置可能看起来很神奇 2.支持的服务类型数量非常有限– 例如如果需要与Cassandra的连接则自动重新配置将不起作用 方法2 –显式属性 1.相当简单。 2.遵循Spring Boot的方法并使用了一些基于Boot的应用程序的最佳实践–例如创建数据源连接池的顺序是确定的所有这些最佳实践都将使用此方法。 1.必须明确禁用自动重配置 2.需要知道扁平化属性的外观 3.可能必须通过环境属性手动注入“云”配置文件以区分本地开发和云部署 4.难以封装对较新服务类型的连接的可重用性-例如Cassandra或DynamoDB。 方法3 – Spring Cloud连接器 1.易于整合 2.易于添加可重复使用的集成到较新的服务类型 1.绕过Spring Boot连接池逻辑的优化。 结论 我个人更喜欢采用方法2因为它与Spring Boot的默认设置最接近而不受方法的不利影响。 如果需要与服务建立更复杂的连接我可能会采用方法3。 参考文献 斯科特·弗雷德里克 Scott Frederick 的Spring音乐一直是他的常客。 2.我从Ben Hale的pong_matcher_spring样本中慷慨地借了下来 。 翻译自: https://www.javacodegeeks.com/2016/05/approaches-binding-spring-boot-application-service-cloud-foundry.html