web services - CXF EndPointImpl如何在发布的端点中设置超时



对不起,如果我的问题不是很清楚,很难解释我的问题。

所以,我第一次使用CXF框架。我在网上搜索了一个解决方案,但没有成功。让我们来解释一下用例。

我尝试编写一个Web服务(在服务器模式下)来接收SOAP消息,处理处理和回答。为此,我使用WSDL优先方法的CXF。

我的实现似乎工作得很好,我通过我实现的类接收带有注释"@webservice"....的SOAP消息处理此请求并返回答案。我的问题位于处理端,取决于SOAP消息,它可能很长,在这种情况下CXF会处理超时。因此,我想配置"超时",它允许我进行这个长处理

    EndpointImpl jaxWsEndpoint = (EndpointImpl) Endpoint.publish(endPointAddress, httpWebService);

对象httpWebService表示"callback"类。

您可以在配置级别使用ReceiveTimeout来设置服务在连接超时之前尝试接收请求的时间长度(以毫秒为单位)。设置0为不超时

  <http-conf:destination name="{http://apache.org/hello_world_soap_http}SoapPort.http-destination">
       <http-conf:server ReceiveTimeout="0" />
  </http-conf:destination>

考虑到连接超时参数也可以在应用服务器配置中设置

如果您不想遵循官方方式(取决于Spring),您可以尝试:

EndpointImpl ep = (EndpointImpl) endpoint;
JettyHTTPDestination dest = (JettyHTTPDestination) ep.getServer().getDestination();
JettyHTTPServerEngine se = (JettyHTTPServerEngine) dest.getEngine();
AbstractConnector ac = (AbstractConnector) se.getConnector();
ac.setIdleTimeout(0);

相关内容

  • 没有找到相关文章

最新更新