多线程仅在 AWS ECS Docker 容器上找不到 JAXB-API

问题描述 投票:0回答:1

我正在使用 JAXB 在我创建的用于 Spring Boot 应用程序的库中转换和封送 XML。该应用程序在具有 ECS 的 Docker 容器中的 AWS 上运行,目前使用 CompletableFuture 和默认线程池来运行该库。代码是这样的:

CompletableFuture<Result> result = CompletableFuture.supplyAsync(() -> apiClient.callApiToGetXmlToTransform(someParameters))
                                                              .thenApplyAsync(searchResultStream -> transformResult(searchResultStream));
然后,transformResult 有一些映射逻辑,用于将传入的 XML 转换为我需要的输出格式(结果)。一切在本地都运行得很好,不会抛出任何错误。然而,当相同的代码在 Docker 容器中的 AWS ECS 上运行时,第一个线程会正确转换并返回,但所有其他线程都会抛出此 JAXB 错误:

Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath. at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278) at javax.xml.bind.ContextFinder.find(ContextFinder.java:421) at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721) at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662) at
我在库和应用程序中的 build.gradle 上都有所有必要的 JAXB 依赖项。为什么此错误仅在 AWS 上的多个线程上抛出,而不是在本地抛出?

java amazon-web-services multithreading docker jaxb
1个回答
0
投票
我也遇到同样的错误,有人解决吗?

© www.soinside.com 2019 - 2024. All rights reserved.