Spring Cloud Data Flow Server for Cloudfoundry - 外部数据源



使用: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 服务器与不驻留在基础中的数据源绑定?

Spring CloudData Flow的CF服务器建立在依靠Spring Cloud Connector进行datasource和连接池自定义的观点之上。

由于我们有意这样做是为了利用库提供的自动化,因此我们无法直接在 SCDF 本身中关闭它。

但是,有一个选项可以完全关闭Spring Cloud Connector的干扰,该选项可用作Spring Boot属性(即spring.cloud=false(,这也适用于SCDF。

在 CF 服务器上设置此属性后,您将能够使用SPRING_DATASOURCE_*属性创建连接池,就像上面manifest.yml中定义的那样。

更新

背景:声明性datasource覆盖和 Spring Cloud Connector(在类路径中(是互斥的,它们不能以任何身份协同工作。

因此,建议在定制 CF 服务器时坚持使用单个模型。当然,在这种情况下,最简单的解决方案是完全禁用连接器。

相关内容

  • 没有找到相关文章

最新更新