将 mysql 服务绑定到 PCF 中的船长服务器时出现 java.lang.IllegalStateException

Posted

技术标签:

【中文标题】将 mysql 服务绑定到 PCF 中的船长服务器时出现 java.lang.IllegalStateException【英文标题】:java.lang.IllegalStateException when binding mysql service to skipper server in PCF 【发布时间】:2019-12-21 20:00:31 【问题描述】:
    我已经在 PCF 中推送了 scdf 服务器 jar 和 skipper 服务器,现在我想将现有的 DB 即 H2 更改为 mysql,为此我已经从市场创建了 MySQL 服务,但是当我尝试将 MySQL 服务绑定到我遇到异常的船长服务器应用程序
java.lang.IllegalStateException: Exiting the application 
since the Spring Cloud Connector library has been detected 
on the classpath. 
Please remove this dependency from your project 
and set the environment variable 
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION 'enabled: false' 
in the Cloud Foundry manifest.

    我尝试将 JBP_CONFIG_SPRING_AUTO_RECONFIGURATION 'enabled: false' 应用于 skipper 服务器环境变量,但仍然遇到相同的异常。

    1234563并手动删除依赖项?如果是,那么我需要在 maven 中排除什么依赖项?)

使用的船长版本:2.1.0

【问题讨论】:

【参考方案1】:

从 v2.0 开始,SCDF 和 Skipper 切换到 Java-CFEnv 项目以在 CF 中自动配置数据源和其他服务。

在这个基础上,特别是在 CF 上,您必须显式地覆盖 2 个额外的属性,这样我们才能成功地消除 Java-Buildpack 及其在运行时的自动重新配置冲突。而且,这些属性是:

SPRING_PROFILES_ACTIVE: cloud
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: 'enabled: false'

它们都包含在SCDF for CF 入门指南的示例清单文件中。

此外,如果您使用SCDF for PCF 磁贴,则不必配置所有这些属性。当您在组织/空间中为 SCDF 创建服务实例时,它们会自动为您提供。

【讨论】:

谢谢萨比。我们的组织确实提供了内置消息传递和数据存储的 SCDF 服务。但是当我使用该服务时,我无法应用诸如 enableRandomAppNamePrefix 之类的属性。大多数属性都在船长服务器级别应用,但每当我使用市场 scdf 服务时,我都无法访问船长服务器 env 属性,如果我在 scdf 服务配置实例中应用这些属性,则不会被应用。我在这里为市场 scdf 服务做错了什么吗? 我在尝试使用 SCS 和 MySQL 在 PWS 上部署应用程序时遇到了同样的问题。有趣的是,我可以单独使用它们中的每一个,但不能同时使用它们。我按照您的指导解决了问题。在使用 Java-Buildpack 的自动重新配置时,它们之间似乎存在冲突。非常感谢@Pravin 和 Sabby。

以上是关于将 mysql 服务绑定到 PCF 中的船长服务器时出现 java.lang.IllegalStateException的主要内容,如果未能解决你的问题,请参考以下文章

访问PCF Spring Boot应用程序上的VCAP属性

PCF 调度作业

如何将服务绑定到任何主机的端口?

Pivotal Cloud Foundry - Spring Cloud 服务

将函数绑定到 MySQL 中的列

使用 Pymodbus,我想将线圈状态绑定到我的服务器中的 GPIO 引脚,而不是来自客户端