Spring Cloudfoundry 的云数据流服务器 - 外部数据源
Spring Cloud Data Flow Server for Cloudfoundry - external datasource
使用:Pivotal Cloudfoundry v2.x、Spring Cloud Data Flow Server v1.6.2.RELEASE、SQL Server 2016.
如果服务器数据源配置不是绑定到 PCF 中的应用程序的服务,则它似乎无法成功创建数据源。
SQL 服务器数据库不是我们的 PCF 市场内提供的服务。我重建了服务器应用程序并将 SQL 服务器 jdbc 驱动程序 jar 添加到类路径中。我还包括了数据源配置:
---
applications:
- path: spring-cloud-dataflow-server-cloudfoundry-1.6.2.RELEASE.jar
name: dataflow-server
host: dataflow-server
memory: 4096M
disk_quota: 2048M
no-route: false
no-hostname: false
health-check-type: 'port'
buildpack: java_buildpack_offline
env:
JAVA_OPTS: -Dhttp.keepAlive=false
JBP_CONFIG_CONTAINER_CERTIFICATE_TRUST_STORE: '{enabled: true}'
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE: channing
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_APP_NAME_PREFIX: channing
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL: https://api.pcf.com
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN: pcf.com
SPRING_APPLICATION_NAME: dataflow-server
SPRING_DATASOURCE_URL: jdbc:sqlserver://nonpcf.sqlserver.com\DBINSTANCE:1713;databaseName=SCDF_DEV
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.microsoft.sqlserver.jdbc.SQLServerDriver
SPRING_DATASOURCE_USERNAME: username
SPRING_DATASOURCE_PASSWORD: password
services:
- config-server
- rabbit
security:
basic:
enabled: true
realm: Spring Cloud Data Flow
spring:
cloud:
dataflow:
features:
analytics-enabled: false
错误发生在应用程序启动期间,表明存在未解决的依赖关系,其中没有可用于注入的 javax.sql.DataSource 的唯一实例。
这是一些堆栈跟踪:
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] Caused by: org.springframework.cloud.CloudException: No unique service matching interface javax.sql.DataSource found. Expected 1, found 0
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.Cloud.getSingletonServiceConnector(Cloud.java:197) ~[spring-cloud-connectors-core-2.0.2.RELEASE.jar!/:na]
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.config.java.CloudServiceConnectionFactory.dataSource(CloudServiceConnectionFactory.java:56) ~[spring-cloud-spring-service-connector-2.0.2.RELEASE.jar!/:na]
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.dataflow.server.cloudfoundry.config.DataSourceCloudConfig.scdfCloudDataSource(DataSourceCloudConfig.java:47) ~[spring-cloud-dataflow-server-cloudfoundry-autoconfig-1.6.2.RELEASE.jar!/:1.6.2.RELEASE]
这是故意的吗?我们如何将 PCF SCDF 服务器与不驻留在基金会内的数据源绑定?
Spring Cloud Data Flow 的 CF 服务器建立在 datasource
和 connection-pool customization.
依赖 Spring Cloud Connector 的观点之上
由于我们有意这样做是为了利用图书馆提供的自动化功能,因此我们无法直接在 SCDF 中将其关闭。
但是,有一个选项可以完全关闭 Spring Cloud Connector 的干扰,并且该选项可用作 Spring 启动 属性(即 spring.cloud=false
),这也适用于 SCDF。
在 CF 服务器上设置 属性 后,您就可以使用 SPRING_DATASOURCE_*
属性创建连接池,就像上面 manifest.yml
中定义的那样.
更新
背景:声明性 datasource
覆盖和 Spring Cloud Connector(在类路径中)是相互排斥的,它们不能以任何身份一起工作。
因此,建议在自定义 CF-server 时坚持使用单一模型。在这种情况下,最简单的解决方案当然是完全禁用连接器。
使用:Pivotal Cloudfoundry v2.x、Spring Cloud Data Flow Server v1.6.2.RELEASE、SQL Server 2016.
如果服务器数据源配置不是绑定到 PCF 中的应用程序的服务,则它似乎无法成功创建数据源。
SQL 服务器数据库不是我们的 PCF 市场内提供的服务。我重建了服务器应用程序并将 SQL 服务器 jdbc 驱动程序 jar 添加到类路径中。我还包括了数据源配置:
---
applications:
- path: spring-cloud-dataflow-server-cloudfoundry-1.6.2.RELEASE.jar
name: dataflow-server
host: dataflow-server
memory: 4096M
disk_quota: 2048M
no-route: false
no-hostname: false
health-check-type: 'port'
buildpack: java_buildpack_offline
env:
JAVA_OPTS: -Dhttp.keepAlive=false
JBP_CONFIG_CONTAINER_CERTIFICATE_TRUST_STORE: '{enabled: true}'
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE: channing
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_APP_NAME_PREFIX: channing
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL: https://api.pcf.com
SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN: pcf.com
SPRING_APPLICATION_NAME: dataflow-server
SPRING_DATASOURCE_URL: jdbc:sqlserver://nonpcf.sqlserver.com\DBINSTANCE:1713;databaseName=SCDF_DEV
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.microsoft.sqlserver.jdbc.SQLServerDriver
SPRING_DATASOURCE_USERNAME: username
SPRING_DATASOURCE_PASSWORD: password
services:
- config-server
- rabbit
security:
basic:
enabled: true
realm: Spring Cloud Data Flow
spring:
cloud:
dataflow:
features:
analytics-enabled: false
错误发生在应用程序启动期间,表明存在未解决的依赖关系,其中没有可用于注入的 javax.sql.DataSource 的唯一实例。
这是一些堆栈跟踪:
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] Caused by: org.springframework.cloud.CloudException: No unique service matching interface javax.sql.DataSource found. Expected 1, found 0
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.Cloud.getSingletonServiceConnector(Cloud.java:197) ~[spring-cloud-connectors-core-2.0.2.RELEASE.jar!/:na]
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.config.java.CloudServiceConnectionFactory.dataSource(CloudServiceConnectionFactory.java:56) ~[spring-cloud-spring-service-connector-2.0.2.RELEASE.jar!/:na]
2018-10-23T09:39:14.365-06:00 [APP/PROC/WEB/0] [OUT] at org.springframework.cloud.dataflow.server.cloudfoundry.config.DataSourceCloudConfig.scdfCloudDataSource(DataSourceCloudConfig.java:47) ~[spring-cloud-dataflow-server-cloudfoundry-autoconfig-1.6.2.RELEASE.jar!/:1.6.2.RELEASE]
这是故意的吗?我们如何将 PCF SCDF 服务器与不驻留在基金会内的数据源绑定?
Spring Cloud Data Flow 的 CF 服务器建立在 datasource
和 connection-pool customization.
由于我们有意这样做是为了利用图书馆提供的自动化功能,因此我们无法直接在 SCDF 中将其关闭。
但是,有一个选项可以完全关闭 Spring Cloud Connector 的干扰,并且该选项可用作 Spring 启动 属性(即 spring.cloud=false
),这也适用于 SCDF。
在 CF 服务器上设置 属性 后,您就可以使用 SPRING_DATASOURCE_*
属性创建连接池,就像上面 manifest.yml
中定义的那样.
更新
背景:声明性 datasource
覆盖和 Spring Cloud Connector(在类路径中)是相互排斥的,它们不能以任何身份一起工作。
因此,建议在自定义 CF-server 时坚持使用单一模型。在这种情况下,最简单的解决方案当然是完全禁用连接器。