当前位置:   article > 正文

springboot引入cdc无法启动排查_springboot 集成flink-cdc 导致项目无法启动显示正常端口

springboot 集成flink-cdc 导致项目无法启动显示正常端口
背景

系统提供为外部应用程序提供了一个验证flink sql语法以及在线试运行flink sql的接口。

bug

在pom.xml引入cdc依赖:

  1. <dependency>
  2. <groupId>com.ververica</groupId>
  3. <artifactId>flink-sql-connector-oracle-cdc</artifactId>
  4. <version>${flink.cdc.version}</version>
  5. </dependency>

使用idea启动springboot应用,控制台输入如下:

可以看到没有任务的异常日志,只有 Process finished with exit code 1。

排查

修改Application 启动类增加异常打印:

  1. @Configuration
  2. @RefreshScope
  3. @EnableDiscoveryClient
  4. @EnableFeignClients
  5. @EnableCaching
  6. @EnableAsync
  7. @SpringBootApplication
  8. public class Application {
  9. public static void main(String[] args) {
  10. try {
  11. SpringApplication.run(Application.class, args);
  12. } catch (Exception e) {
  13. e.printStackTrace(System.err);
  14. throw new RuntimeException(e);
  15. }
  16. }
  17. }

再次运行,提示 javax.xml.parsers.ParserconfiqurationException create breakpoint : SAx feature 'http://xm.org/sax/features/external-general-entities'not supported

从错误日志可以看出来,cdc依赖包中的oracle.xml.jaxp.JXSAXParserFactory与logback存在冲突导致致 logback 初始化报错,异常位置在 ch.qos.logback.core.joran.event.SaxEventRecorder#buildSaxParser,SAXParserFactory spf = SAXParserFactory.newInstance();这一行获取到的 SAXParserFactory 实例是cdc包中的错误实现

SAXParserFactory 作为 XML 文档解析器的接口,核心入口为 javax.xml.parsers.FactoryFinder#find,初始化该类实例的逻辑如下:

  1. 检验系统属性 javax.xml.parsers.SAXParserFactory是否设置,如果有使用该值
  2. 读取 ${java.home}/conf/jaxp.properties 配置 javax.xml.parsers.SAXParserFactory
  3. 依据 java.util.ServiceLoader 查找实现了 SAXParserFactory 的类后,取第一个

三种方式未能找到,使用默认实现com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl。

解决

设置系统属性 javax.xml.parsers.SAXParserFactory,启动正常

  1. @Configuration
  2. @RefreshScope
  3. @EnableDiscoveryClient
  4. @EnableFeignClients
  5. @EnableCaching
  6. @EnableAsync
  7. @SpringBootApplication
  8. public class Application {
  9. public static void main(String[] args) {
  10. try {
  11. // FIX javax.xml.parsers.ParserConfigurationException: SAX feature 'http://xml.org/sax/features/external-general-entities' not supported.
  12. System.setProperty("javax.xml.parsers.SAXParserFactory", "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl");
  13. SpringApplication.run(Application.class, args);
  14. } catch (Exception e) {
  15. e.printStackTrace(System.err);
  16. throw new RuntimeException(e);
  17. }
  18. }
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/381149
推荐阅读
相关标签
  

闽ICP备14008679号