Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用本地spring云连接器/本地\u配置\u连接器时未找到合适的云连接器_Spring_Spring Boot_Spring Cloud_Spring Cloud Config_Spring Cloud Connectors - Fatal编程技术网

尝试使用本地spring云连接器/本地\u配置\u连接器时未找到合适的云连接器

尝试使用本地spring云连接器/本地\u配置\u连接器时未找到合适的云连接器,spring,spring-boot,spring-cloud,spring-cloud-config,spring-cloud-connectors,Spring,Spring Boot,Spring Cloud,Spring Cloud Config,Spring Cloud Connectors,我正在尝试使用本地cloud spring连接器在本地环境中测试我的应用程序,然后才能将其部署到基于CF的云环境中。从弹簧连杆 我按照流程在项目资源目录中创建了名为spring-cloud-bootstrap.properties的属性文件。它有以下内容 spring.cloud.properties文件:C:\Users\IBM\u ADMIN\git\ServiceXchange5\ServiceXchange\spring-cloud.properties 我确实在上面给出的路径中有文件

我正在尝试使用本地cloud spring连接器在本地环境中测试我的应用程序,然后才能将其部署到基于CF的云环境中。从弹簧连杆

我按照流程在项目资源目录中创建了名为spring-cloud-bootstrap.properties的属性文件。它有以下内容

spring.cloud.properties文件:C:\Users\IBM\u ADMIN\git\ServiceXchange5\ServiceXchange\spring-cloud.properties

我确实在上面给出的路径中有文件spring-cloud.properties

从spring配置bean中,我有以下内容

@EnableWebMvc
@Configuration
@EnableAspectJAutoProxy
public class CloudServiceConfig extends AbstractCloudConfig {

@Bean
public DataSource getDataSource() throws AppException  {

org.springframework.cloud.service.PooledServiceConnectorConfig.PoolConfig poolConfig = new PoolConfig(50, 100, 3000);
org.springframework.cloud.service.relational.DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, null);
return connectionFactory().dataSource(SX_DB_USED, dbConfig);

}
现在,这个数据源bean被注入到各种其他地方。有了这些属性文件,我希望将创建用于本地配置的CloudConnectorBean,并且我应该能够使用它们为连接池的数据源添加更多配置

但是,当我访问应用程序时,似乎本地配置连接器本身未激活

Initialization of bean failed; nested exception is org.springframework.cloud.CloudException: No suitable cloud connector found
[ERROR   ] SRVE0271E: Uncaught init() exception created by servlet [appServlet] in application [ServiceXchange]:  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cloudServiceConfig' defined in file [C:\Users\IBM_ADMIN\git\ServiceXchange5\ServiceXchange\target\classes\com\hcl\service\config\CloudServiceConfig.class]: Initialization of bean failed; nested exception is org.springframework.cloud.CloudException: No suitable cloud connector found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:2388)
at [internal classes]
Caused by: org.springframework.cloud.CloudException: No suitable cloud connector found
at org.springframework.cloud.CloudFactory.getCloud(CloudFactory.java:55)
at org.springframework.cloud.config.java.AbstractCloudConfig.setBeanFactory(AbstractCloudConfig.java:85)
at com.hcl.service.config.CloudServiceConfig$$EnhancerBySpringCGLIB$$9529c032.CGLIB$setBeanFactory$54(<generated>)
at com.hcl.service.config.CloudServiceConfig$$EnhancerBySpringCGLIB$$9529c032$$FastClassBySpringCGLIB$$6c6301dd.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareMethodInterceptor.intercept(ConfigurationClassEnhancer.java:277)
at com.hcl.service.config.CloudServiceConfig$$EnhancerBySpringCGLIB$$9529c032.setBeanFactory(<generated>)
at org.springframework.context.annotation.ConfigurationClassPostProcessor$EnhancedConfigurationBeanPostProcessor.postProcessPropertyValues(ConfigurationClassPostProcessor.java:480)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
... 13 more
bean初始化失败;嵌套异常为org.springframework.cloud.CloudException:未找到合适的云连接器
[ERROR]SRVE0271E:在应用程序[ServiceXchange]:org.springframework.beans.factory.BeanCreationException中由servlet[appServlet]创建的未捕获init()异常:创建文件中定义的名为“cloudServiceConfig”的bean时出错[C:\Users\IBM\u ADMIN\git\ServiceXchange5\ServiceXchange\target\classes\com\hcl\service\config\CloudServiceConfig.class]:bean初始化失败;嵌套异常为org.springframework.cloud.CloudException:未找到合适的云连接器
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:772)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
位于com.ibm.ws.webcontainer.webapp.webapp.notifyServletContextCreated(webapp.java:2388)
在[内部课程]
原因:org.springframework.cloud.CloudException:未找到合适的云连接器
位于org.springframework.cloud.CloudFactory.getCloud(CloudFactory.java:55)
位于org.springframework.cloud.config.java.AbstractCloudConfig.setBeanFactory(AbstractCloudConfig.java:85)
在com.hcl.service.config.CloudServiceConfig$$EnhancerBySpringCGLIB$$9529c032.CGLIB$setBeanFactory$54()
在com.hcl.service.config.CloudServiceConfig$$EnhancerBySpringCGLIB$$9529c032$$FastClassBySpringCGLIB$$6c6301dd.invoke()上
位于org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
位于org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareMethodInterceptor.intercept(ConfigurationClassEnhancer.java:277)
在com.hcl.service.config.CloudServiceConfig$$EnhancerBySpringCGLIB$$9529c032.setBeanFactory()上
位于org.springframework.context.annotation.ConfigurationClassPostProcessor$EnhancedConfiguration BeanPostProcessor.PostProcessPropertyValue(ConfigurationClassPostProcessor.java:480)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
…还有13个
我不知道为什么本地云连接器没有被激活。根据链接,它应该在检测到属性文件后激活

注意:我尝试过将属性文件放在不同的位置,比如(直接放在应用程序根目录下、web inf/lib中、参考资料中等)


这里有什么帮助吗?

您是否正在使用maven shade插件来打包您的应用程序?如果是,请确保安装了

据我分析,什么时候会丢失Cloud Foundry连接器覆盖/覆盖本地连接器中的ServiceLoader


当然,只有当您试图运行本地构建的包时,所有这些都是正常的。直接从IDE(在我的例子中是IntelliJ)它总是有效的。

在最近的一个项目中,我们遇到了相同的问题。在云中,一切都有效,但在本地抛出了错误“找不到合适的云连接器”。在我们的例子中,为了排除依赖性问题(Spring Boot microservice将部署在CloudFoundry环境中)以下两个依赖项(由依赖项管理管理的版本)就足够了

<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>

org.springframework.cloud
弹簧云弹簧服务连接器
org.springframework.cloud
SpringCloudFoundry连接器
应该使用的CloudFoundryConnector检查是否设置了环境变量VCAP_应用程序,然后才将自身标记为合适,否则它将不起任何作用。通常