当前位置: 首页 > 知识库问答 >
问题:

GlassFish Java web服务超时

罗茂实
2023-03-14

我正在建立一个新的GlassFish服务器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次时,它会抛出一个异常,如下所示。我想这个异常的原因是在超时,但是我不知道是哪一个引起的,我可以在哪里更改它。

null

共有1个答案

潘修为
2023-03-14

最后,我找到了合适的超时设置。我必须转到管理面板,在配置服务器-配置网络配置中,我必须将HTTP请求超时设置为http-listener-1。

 类似资料:
  • 问题内容: 我正在尝试用golang写一个Web服务器来处理地理编码请求。其中一些请求需要花费一分钟以上的时间来处理。在这种情况下,尽管处理程序一直在运行,但是服务器似乎正在向客户端返回一个空的主体。我尝试了下面的代码无济于事。我想念什么吗?pat这可能是个问题吗? 客户是红宝石。但我不认为这是问题所在,因为如果使用curl,我会看到类似的行为。 问题答案: 找到了问题。我没有提到我的服务器在Am

  • 我在OpenShift容器平台v3上部署了一个应用程序。6.它由相互连接的多个服务组成。 前端服务调用后端服务的耗时函数(通过REST调用),但30秒后它会收到“504网关超时”消息。前端运行在nginx上,但是我已经配置了长代理发送/读取超时,所以504消息不是来自它。我认为它来自OpenShift平台的服务代理组件,但是我找不到在哪里以及如何配置一种服务代理超时。我知道外部路由存在HAProx

  • 我正在用C++开发双向流gRPC。我想在服务器端设置一个超时限制,如果连接超过一个阈值,就关闭连接。 但是我发现的唯一超时机制是在客户端(https://grpc.io/blog/deadlines/#c)。我找不到任何API可以用于ServerContext(https://grpc.github.io/grpc/cpp/classgrpc_1_1_server_context.html)。有人

  • 我已经安装了selenium IDE和selenium server(selenium RC)。。。当使用phpunit在命令提示符下运行测试用例时,会出现如下错误 访问位于“”的Selenium服务器时,响应无效http://localhost:4444/selenium-服务器/驱动程序/':30000ms后超时 我在selenium IDE选项超时属性中进行了更改,并且在启动服务器时 jav

  • 我需要实现一个预定的执行器服务,它每隔x秒运行一个线程。线程执行应该中断,以防它需要超过y秒。我曾尝试使用SchduledExecutorService实现该解决方案,该解决方案具有可配置的间隔参数,但没有超时参数。我有一些想法,我想听听你对实现/技术的建议。

  • 我有三个服务的spring-cloud应用程序:Eureka服务器+网关(zuul)+用户服务(2个实例) 在localhost中,所有的东西都在工作,我可以访问: Docker创建了4个容器,所有3个服务都注册在Eureka-Server中: Eureka注册网关和2个用户服务实例 用户服务实例的ip: null application.yml Docker-Compose: