我们最近将 apache Camel 从 3.x 升级到 4.x。从那时起 swagger 就不再工作了。请参阅 swagger ui 的附图。
启动应用程序时,我们收到以下警告。
2024-01-11T13:17:36,363 WARN [main] o.a.c.s.s.SpringdocAutoConfiguration$1:从 Camel Rest DSL 生成 OpenAPI 时出错,原因是:无法调用“java.util.Map.clear()”,因为“io.swagger”的返回值.v3.oas.models.media.Schema.getExtensions()”为空。该异常被忽略。 java.lang.NullPointerException:无法调用“java.util.Map.clear()”,因为“io.swagger.v3.oas.models.media.Schema.getExtensions()”的返回值为空 在 org.apache.camel.openapi.OpenApiHelper.clearVendorExtensions(OpenApiHelper.java:59) ~[camel-openapi-java-4.0.2.jar:4.0.2] 在 org.apache.camel.springboot.springdoc.SpringdocAutoConfiguration.createOpenAPI(SpringdocAutoConfiguration.java:131) ~[camel-springdoc-starter-4.0.2.jar:4.0.2] 在 org.apache.camel.springboot.springdoc.SpringdocAutoConfiguration$1.beforeApplicationStart(SpringdocAutoConfiguration.java:81) [camel-springdoc-starter-4.0.2.jar:4.0.2] 在 org.apache.camel.spring.boot.CamelSpringBootApplicationListener.onApplicationEvent(CamelSpringBootApplicationListener.java:111) [camel-spring-boot-4.0.2.jar:4.0.2] 在 org.apache.camel.spring.boot.CamelSpringBootApplicationListener.onApplicationEvent(CamelSpringBootApplicationListener.java:59) [camel-spring-boot-4.0.2.jar:4.0.2]
application.properties 已暴露 url -
我们在 pom.xml 中有以下骆驼依赖项
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>${camel.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-rabbitmq</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-junit5</artifactId>
<version>${camel.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-servlet-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-jackson-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<!-- for Swagger-->
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-springdoc-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-soap-starter</artifactId>
<version>4.0.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-rest-starter</artifactId>
<version>4.0.2</version>
<exclusions>
<exclusion>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxfcodegen.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</exclusion>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-resilience4j-starter</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.8</version>
</dependency>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxfcodegen.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<defaultOptions>
<autoNameResolution>true</autoNameResolution>
</defaultOptions>
<wsdlOptions>
<wsdlOption>
<wsdl>src/main/resources/wsdl/TransactionLookupService.wsdl</wsdl>
</wsdlOption>
<wsdlOption>
<wsdl>src/main/resources/wsdl/CTMService.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
好的,我可以看到错误在哪里,并为下一个 Camel 版本创建了一个票证和修复程序 https://issues.apache.org/jira/browse/CAMEL-20342