jakarta-ee - "Already connected"在 docker 容器内运行 jersey 应用程序时出现异常

标签 jakarta-ee docker jersey-2.0 jersey-client

我正在尝试对一个 jersey 应用程序进行 dockerize,该应用程序既充当 REST 服务器又充当客户端。该应用程序在 Docker 容器内运行时的行为似乎有所不同。

我能够向非 Docker 化服务 (A) 执行请求。当我尝试在另一个非 Docker 化的 REST 服务器 (B) 上执行请求时,在这两种情况下都使用 JAX-RS 客户端 API,就会出现问题:

// common code - for contacting both A & B services
private static final Client client = ClientBuilder.newClient().register(JacksonFeature.class);  

// inside the method called for each request
WebTarget target = client.target(location);
// for each query param : target = target.queryParam(..);
logger.info("This is logged successfully");
Response resp = target.request(MediaType.APPLICATION_JSON_TYPE).method(method, Entity.json(payloadBean));
logger.info("This is NOT logged for B service");

此时我收到一个javax.ws.rs.ProcessingException:已经连接 ... 引起:java.lang.IllegalStateException:已经连接

我使用一个 Dockerfile 来设置 oracle-java-8 和(Tomcat 或 Jetty),这与我在 docker 之前在主机上所做的完全相同,一切正常!

肯定不涉及 SSL。

在具有 B 服务的同一虚拟机上运行我的应用程序会产生相同的行为。

服务 A 是 jersey,而 B 是 django,但这与问题无关,因为它们都是 REST 服务。

知道如何调试这种情况吗?

最佳答案

我对垃圾邮件感到抱歉,因为事实证明这是一个非常愚蠢的错误:

service A location was an IP address
service B location was an uknown dns name to the container

因此将 --add-host B_fqdn:B_internal_IP 传递给 docker run 解决了问题

关于jakarta-ee - "Already connected"在 docker 容器内运行 jersey 应用程序时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36622484/

相关文章:

ubuntu - 如何减少 .NET Core docker 容器的内存使用量?

jakarta-ee - 不清楚 EJB 3.1 规范 : Message Driven Bean superclasses allowed or not?

java - 无法从@OneToMany 集合中删除元素

docker - "Failed to start ' npm远程访问页面时出现'"错误信息

docker - 从 docker 容器中创建一个千斤顶客户端

jakarta-ee - EJB jax-rs 资源上的 Jersey 自定义 SecurityContext

java - JAX-RS 响应对象将对象字段显示为 NULL 值

java - Windows 中非管理员权限所需文件的 Log4j 属性

jsp - 如何在表达式语言 (EL) 中将 double 或 float 值转换为 int 而不进行四舍五入?

java - 如何限制 Jersey 2 连接