- У меня запущено приложение веб-службы на Pivotal Cloud Foundry.
- Я добавил к нему службу, которая является базой данных MySql, и связал ее с приложением веб-службы.
- Мой вопрос заключается в том, как получить источник данных My Sql db с помощью API Java Plus Cloud Foundry в (Spring-boot).
Что я пробовал:
public class Configuration {
@Configuration
@Profile("cloud")
static class CloudConfiguration {
@Bean
public DataSource dataSource() {
CloudFactory cloudFactory = new CloudFactory();
Cloud cloud = cloudFactory.getCloud();
String serviceID = cloud.getServiceID();
return cloud.getServiceConnector(serviceID, DataSource.class, null);
}
}
Выполненный метод:
Configuration.CloudConfiguration cloudConfiguration = new CloudConfiguration();
cloudConfiguration.dataSource();
Ошибка, которую я получаю:
Из этого кода я получаю CloudException, так как не найдено подходящего CloudConnector, метод getCloud()
выдает исключение CloudException.
Подробности файла манифеста:
applications:
- name: springboot-cloudfoundry
memory: 512M
instances: 1
path: target/springboot-cloudfoundry-0.0.1-SNAPSHOT.jar
buildpack: https://github.com/cloudfoundry/java-buildpack
env:
SPRING_PROFILES_ACTIVE : cloud
POM File:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-spring-service-connector</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-cloudfoundry-connector</artifactId>
</dependency>
Stack Trace:
org.springframework.cloud.CloudException: No suitable cloud connector found
at org.springframework.cloud.CloudFactory.getCloud(CloudFactory.java:55)
at org.springframework.cloud.config.CloudScanHelper.initializeCloud(CloudScanHelper.java:85)
at org.springframework.cloud.config.CloudScanHelper.registerServiceBeans(CloudScanHelper.java:55)
at org.springframework.cloud.config.java.ServiceScanConfiguration.registerBeanDefinitions(ServiceScanConfiguration.java:22)
at org.springframework.cloud.config.java.CloudScanConfiguration.registerBeanDefinitions(CloudScanConfiguration.java:22)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:344)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:151)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:124)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:318)
at org.springframework.ide.eclipse.metadata.process.JdtConfigurationClassPostProcessor.postProcess(JdtConfigurationClassPostProcessor.java:88)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansJavaConfig$3.run(BeansJavaConfig.java:328)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansJavaConfig.executePostProcessor(BeansJavaConfig.java:321)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansJavaConfig.access$5(BeansJavaConfig.java:319)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansJavaConfig$2.call(BeansJavaConfig.java:233)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansJavaConfig$2.call(BeansJavaConfig.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)