Java-buildpack: JBP 是否支持 Spring Boot 2.0?

创建于 2017-09-01  ·  6评论  ·  资料来源: cloudfoundry/java-buildpack

所有6条评论

我们还没有针对它进行测试,但鉴于它的运行方式 ( java -jar ) 没有改变,我没有理由相信它没有改变。

我实际上对当前的 M3 有问题。 但只有在使用 MongoDB 时才会发生。 Cloud Foundry 尝试重新配置 MongoDB 连接并遇到NoSuchMethodError

据我所知,这是由于spring-data-mongo依赖项中的重大更改造成的。

安装程序是一个基本的 Spring Boot 2.0.0.M3 应用程序,具有以下启动器:

  • 执行器
  • 数据蒙戈
  • 网络
  • 等等。

该项目可以在这里找到:
https://github.com/nt-ca-aqe/library-app/tree/master/library-service

日志摘录:

2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] 2017-09-13 10:56:07.083 ERROR [] --- [ main] o.s.boot.SpringApplication : Application startup failed
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] java.lang.NoSuchMethodError: org.springframework.data.mongodb.core.SimpleMongoDbFactory.<init>(Lcom/mongodb/Mongo;Ljava/lang/String;)V
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.org.springframework.cloud.service.document.MongoDbFactoryCreator.createMongoDbFactory(MongoDbFactoryCreator.java:50)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.org.springframework.cloud.service.document.MongoDbFactoryCreator.create(MongoDbFactoryCreator.java:37)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.org.springframework.cloud.service.document.MongoDbFactoryCreator.create(MongoDbFactoryCreator.java:31)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.org.springframework.cloud.Cloud.getServiceConnector(Cloud.java:245)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.org.springframework.cloud.Cloud.getSingletonServiceConnector(Cloud.java:155)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.spring.AbstractCloudServiceBeanFactoryPostProcessor.reconfigureBean(AbstractCloudServiceBeanFactoryPostProcessor.java:119)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.spring.AbstractCloudServiceBeanFactoryPostProcessor.processBean(AbstractCloudServiceBeanFactoryPostProcessor.java:112)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.spring.AbstractCloudServiceBeanFactoryPostProcessor.processBeans(AbstractCloudServiceBeanFactoryPostProcessor.java:97)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.cloudfoundry.reconfiguration.spring.AbstractCloudServiceBeanFactoryPostProcessor.postProcessBeanFactory(AbstractCloudServiceBeanFactoryPostProcessor.java:63)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:282)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:127)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:693)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:122)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:327)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1245)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1233)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at library.service.ApplicationKt.main(Application.kt:17)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at java.lang.reflect.Method.invoke(Method.java:498)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
2017-09-13T12:56:07.084+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
2017-09-13T12:56:07.085+02:00 [APP/PROC/WEB/0] [OUT] 2017-09-13 10:56:07.085 INFO [] --- [ main] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext<strong i="19">@2cfb4a64</strong>: startup date [Wed Sep 13 10:56:02 UTC 2017]; root of context hierarchy
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] 2017-09-13 10:56:07.087 WARN [] --- [ main] ConfigServletWebServerApplicationContext : Exception thrown from LifecycleProcessor on context close
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext<strong i="20">@2cfb4a64</strong>: startup date [Wed Sep 13 10:56:02 UTC 2017]; root of context hierarchy
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:433)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1004)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:963)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:808)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:338)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1245)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1233)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at library.service.ApplicationKt.main(Application.kt:17)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at java.lang.reflect.Method.invoke(Method.java:498)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
2017-09-13T12:56:07.088+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] 2017-09-13 10:56:07.089 ERROR [] --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Destroy method on bean with name 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory' threw an exception
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext<strong i="21">@2cfb4a64</strong>: startup date [Wed Sep 13 10:56:02 UTC 2017]; root of context hierarchy
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:420)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:95)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:240)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:582)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:558)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:952)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:527)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.destroySingletons(FactoryBeanRegistrySupport.java:228)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:959)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1035)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1011)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:963)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:808)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:338)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1245)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1233)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at library.service.ApplicationKt.main(Application.kt:17)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at java.lang.reflect.Method.invoke(Method.java:498)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
2017-09-13T12:56:07.089+02:00 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
2017-09-13T12:56:07.446+02:00 [APP/PROC/WEB/0] [OUT] Exit status 1

是的,这是一个自动重新配置问题。 我们依赖的 Spring Cloud Connectors 版本可能还没有准备好升级到 Spring Data 的主要版本。 @scottfrederick你知道这一点吗,我需要做的就是开始使用新版本的 Spring Cloud 连接器?

我一直在将我们的 Java 测试应用程序更新为Boot 2.0 。 基于这项工作,唯一似乎有问题的是 Spring Data Mongo 的自动重新配置似乎被破坏了(API 更改)。 我将把这个问题作为一个指标打开,然后在我们修复到位后关闭它。

任何估计何时可用? 另外:目前是否有适用的解决方法?

我们非常接近交付,但仍在等待@scottfrederick发布 Spring Cloud Connectors。 我们已经做了大量工作来简化自动重新配置并将其升级为使用 Spring Cloud Connectors 2.x。 作为这项工作的一部分,我们提交了一个 PR以确保所有配置的类型在 Boot 1.x 和 Boot 2.x 中都兼容。 这已被包括在内,但仍在进行测试。 一旦发布,我们将使用它并获得一个新版本的自动重新配置。

除了 MongoDB 自动重新配置外,其他一切都按预期工作,因此没有真正需要解决的问题。 如果您尝试对 MongoDB 进行自动重新配置,除了明确配置您的应用程序以使用该服务(无论如何您都应该这样做;自动重新配置对于生产系统不是一个好的选择)之外,没有其他解决方法。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ghost picture ghost  ·  26评论

chrylis picture chrylis  ·  10评论

kmacpher67 picture kmacpher67  ·  28评论

edeandrea picture edeandrea  ·  4评论

thorntonrp picture thorntonrp  ·  4评论