RESTEASY004655:无法调用请求:org.apache.http.NoHttpResponseException:host_url 无法响应

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

有时(随机发生,有时在一个请求之后,有时在 10 个请求之后)我的 Batch-Job 崩溃,并出现以下异常:

javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request: org.apache.http.NoHttpResponseException: host_url failed to respond
    at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:327)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:443)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:63)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.post(ClientInvocationBuilder.java:227)

异常是由以下代码触发的:

public YpspResponse sendRequest(YpspRequest request) {
        return webTarget
                .request(MediaType.APPLICATION_XML)
                .post(Entity.xml(request))
                .readEntity(YpspResponse.class);
    }

WebTarget 使用以下代码初始化:

            ResteasyClientBuilder builder = new ResteasyClientBuilder()
                    .socketTimeout(30, TimeUnit.SECONDS)
                    .connectTimeout(5, TimeUnit.SECONDS)
                    .connectionPoolSize(500)
                    .keyStore(keyStore, ynetKeystorePassword.toCharArray())
                    .trustStore(trustStore);

            if (proxyConfiguration.useProxy()){
                logger.info("{}", proxyConfiguration.getHost());
                builder.defaultProxy(proxyConfiguration.getHost(), proxyConfiguration.getPort());
            }

            return builder
                    .build()
                    .target(ynetUrl)
                    .register(messageBodyReader)
                    .register(loggingFilter)
                    .register((ClientRequestFilter) requestContext -> {
                        byte[] auth = (username + ":" + password).getBytes("UTF-8");
                        requestContext.getHeaders().putSingle(HttpHeaders.AUTHORIZATION, "BASIC " + Base64.getEncoder().encodeToString(auth));
                        requestContext.getHeaders().putSingle("version", "1.1");
                    });

我正在使用RESTEASY:3.12.1.FINAL

看起来

ResteasyClient
尝试使用已使用的连接而不是新连接。我该如何解决这个问题?

java network-programming jax-ws resteasy
1个回答
0
投票

升级至3.15.2版本问题得到解决

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