对不起,如果我的问题不是很清楚,很难解释我的问题。
所以,我第一次使用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);