GlassFish Java Web 服务超时

我正在设置一个新的 GlassFish Server 4.1.1,其中部署了一个 Java Web 服务。Web 服务有一个 Web 方法,它接收 JSON 作为输入参数,结果它也返回一个 JSON。要将 Java 对象序列化/反序列化到 JSON,我使用的是 Gson 库。Web 方法正在调用另一个 Web 服务,并且一次运行大约需要 2-3 分钟。例如,我在循环中调用此 Web 服务 6-10 次,因此 Web 方法等待大约 16-30 分钟以返回一个值。问题是超时,但我不知道在哪里以及如何为我的问题设置它。


我尝试从 Visual Studio C# 项目中调用此 Java Web 服务,我在其中添加了一个 Web 引用,我在其中定义了 Web 服务的 Web 引用 URL。我还设置了 XML Web 服务客户端等待对同步 XML Web 服务请求的回复到达的时间。我将其设置为 10 小时,如下所示。


static string CallEARSjDE(string json)

{

    EARSWebReference.EARSWebService EARSWS = new EARSWebReference.EARSWebService();

    EARSWS.Timeout = 36000000;    // 10 hours


    return EARSWS.EARSjDE(json);

}

我还为在 Java Web 方法中发出的 Web 服务请求设置了超时。我设置为 1 小时。


Gson gson = new Gson();

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(1 * 3600000).build();   // timeout set to 1 hour

HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();

HttpPost post = new HttpPost(this.ServiceURL);

StringEntity postingString = new StringEntity(gson.toJson(problemLCSRequest));

post.setEntity(postingString);

post.setHeader("Content-type", "application/json");

HttpResponse response = httpClient.execute(post);

HttpEntity entity = response.getEntity();

String responseString = EntityUtils.toString(entity, "UTF-8");


ProblemLCSResponse responseJson = gson.fromJson(responseString, ProblemLCSResponse.class);

除了这两个超时,我还在 GlassFish 管理控制台中设置了一个超时。我在 Configurations → server-config → Web Container 部分完成了,我将会话超时设置为 36.000 秒(10 小时)。


例如,当我在 Web 方法中调用 Web 服务 6 次时,我得到了所需的响应。但是当我调用 Web 服务超过 6 次时,它会抛出如下所示的异常。我认为这个异常的原因是超时,但我不知道是哪一个导致它,我在哪里可以改变它。


皈依舞
浏览 240回答 1
1回答

万千封印

最后,我找到了正确的超时设置。我必须进入管理面板,在里面Configurations → server-config → Network Config我必须设置 http-listener-1 的HTTP 请求超时。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java