我开始使用Spring Cloud Data Flow,并希望实现一个我想要使用的简单Spring Cloud任务。
我从文档中创建了hello world example。当我在我的IDE中运行它时它执行没有任何问题并打印'hello world'。它使用以下JDBC连接:
o.s.j.datasource.SimpleDriverDataSource:创建新的JDBC驱动程序连接到[jdbc:h2:mem:testdb; DB_CLOSE_DELAY = -1; DB_CLOSE_ON_EXIT = false]
我使用dockerized Local Spring Data Flow Server,它使用以下JDBC连接作为其元数据:
o.s.c.d.s.config.web.WebConfiguration:使用URL启动H2服务器:jdbc:h2:tcp:// localhost:19092 / mem:dataflow
当我将任务部署到服务器并启动它时,我得到以下异常:
org.springframework.context.ApplicationContextException:无法启动bean'taskLifecycleListener';嵌套异常是java.lang.IllegalArgumentException:无效的TaskExecution,找不到ID 1
这是因为Task和服务器使用不同的H2数据库。我莫名其妙地无法覆盖任务的数据库配置。我在类路径中使用H2,并使用以下application.yml配置来匹配服务器:
spring:
datasource:
url: jdbc:h2:tcp://localhost:19092/mem:dataflow
username: sa
password:
driver-class-name: org.h2.Driver
永远不会被应用。它始终使用预配置的jdbc:h2:mem:testdb
- 连接。我怎么能让它运行?
答案 0 :(得分:1)
此异常表明任务未连接到数据流正在使用的数据存储。显然您正在使用Spring Cloud Data Flow的默认数据库。
我邀请您为此:
在任务的pom.xml中添加以下依赖项:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
如果前面的提示不起作用。在Spring Boot的1.5.14版本和上一步中使用spring initailizr
如果仍然无法运行,请尝试override the database configuration of Spring cloud DataFlow +在任务的pom.xml中添加相应的依赖项
我希望它将对您有帮助