在Docker容器中运行jersey应用程序时出现“已连接”exception

我试图dockerize作为REST服务器和客户端的jersey应用程序。 在Docker容器中运行时,该应用程序的行为似乎有所不同。

我能够对非docker服务(A)执行请求。 当我尝试在另一个非dockerized 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: Already connectedCaused by: java.lang.IllegalStateException: Already connectedCaused by: java.lang.IllegalStateException: Already connected

我使用一个单一的Dockerfile,我设置了oracle-java-8和(Tomcat或Jetty),就像我在Docker之前所做的一样,一切正常。

当然没有涉及SSL。

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

服务A是jersey,而B是Django,但这不应该是相对的问题,因为他们都是REST服务。

任何想法如何我可以debugging这种情况?

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

 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--add-host B_fqdn:B_internal_IP docker run解决了这个问题