使用:Pivotal Cloudfoundry v2.x,Spring Cloud Data Flow Server v1.6.2.RELEASE,SQL Server 2016。
如果服务器数据源配置不是与PCF中的应用程序绑定的服务,则它似乎无法成功创建数据源。
SQL Server数据库不是我们PCF市场中提供的服务。我已经重建了服务器应用程序,并将SQL Server 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服务器与不在基金会中的数据源绑定?
答案 0 :(得分:0)
Spring Cloud Data Flow的CF服务器基于对datasource
和connection-pool customization依赖Spring Cloud Connector的观点。
由于我们故意这样做是为了利用库提供的自动化功能,因此我们没有直接能力在SCDF本身中将其关闭。
但是,有一个选项可以完全关闭Spring Cloud Connector,而该选项可作为Spring Boot属性(即spring.cloud=false
)使用,该属性也适用于SCDF。
在CF服务器上设置此属性后,您就可以使用SPRING_DATASOURCE_*
属性来创建连接池,例如上面manifest.yml
中的定义。
更新
背景:声明性datasource
覆盖和Spring Cloud Connector(在类路径中)是互斥的,并且不能以任何容量一起使用。
因此,自定义CF服务器时,建议坚持使用单一模型。当然,在这种情况下,最简单的解决方案是完全禁用连接器。