Java 如何在camel cxf端点上配置超时

Java 如何在camel cxf端点上配置超时,java,http,apache-camel,cxf,Java,Http,Apache Camel,Cxf,我有一个使用apachecamelcxf组件开发的soap客户端 我们正在调用的客户端服务的响应时间太长,我被要求增加调用的超时时间 我尝试为cxf ToEndPoint使用自定义cxfEndpointConfigurer,如下所示:cxf://http://localhost:6025/MyMockService?cxfEndpointConfigurer=#MyCxfConfigurer&dataFormat=MESSAGE&portName=%7Bhttp%3A%2F%2Forg.temp

我有一个使用apachecamelcxf组件开发的soap客户端 我们正在调用的客户端服务的响应时间太长,我被要求增加调用的超时时间

我尝试为cxf ToEndPoint使用自定义cxfEndpointConfigurer,如下所示:cxf://http://localhost:6025/MyMockService?cxfEndpointConfigurer=#MyCxfConfigurer&dataFormat=MESSAGE&portName=%7Bhttp%3A%2F%2Forg.tempuri%7DMyServiceSoap11&serviceName=%7Bhttp%3A%2F%2Forg.tempuri%7DMyServiceService

下面是代码:

公共类TemplateEndpointConfigurer实现CxfEndpointConfigurer{

@Override
public void configure(AbstractWSDLBasedEndpointFactory factoryBean) {
    // Do nothing here
}

@Override
public void configureClient(Client client) {

    final HTTPConduit conduit = (HTTPConduit) client.getConduit();

    final HTTPClientPolicy policy = new HTTPClientPolicy();
    policy.setConnectionTimeout(30000);
    policy.setReceiveTimeout(300000);
    policy.setConnection(ConnectionType.CLOSE);
    conduit.setClient(policy);

}

@Override
public void configureServer(Server server) {
    // TODO Auto-generated method stub

}
}

但是在60000ms之后,我仍然会收到一个超时错误,这是cxf的默认设置

你知道我怎样才能成功设置这个超时吗


非常感谢

同样的问题也发生在我身上,我可以通过设置
客户端来解决它。请求\u上下文
标题如下:

这可以在调用web服务之前在路由中定义的处理器/bean中完成:

    public void setWebServiceTimeout(Exchange exchange) {
      Map<String, Object> requestContext = new HashMap<String, Object>();
      HTTPClientPolicy clientPolicy = new HTTPClientPolicy();
      clientPolicy.setReceiveTimeout(300000);
      requestContext.put(HTTPClientPolicy.class.getName(), clientPolicy);
      exchange.getIn().setHeader(Client.REQUEST_CONTEXT , requestContext);
}
public void setWebServiceTimeout(Exchange){
Map requestContext=new HashMap();
HTTPClientPolicy clientPolicy=新的HTTPClientPolicy();
clientPolicy.setReceiveTimeout(300000);
requestContext.put(HTTPClientPolicy.class.getName(),clientPolicy);
exchange.getIn().setHeader(Client.REQUEST_CONTEXT,requestContext);
}

Hello Parasanth,谢谢你的回答,我确认它是有效的,我也选择了它。第一种方法的解决方案是将“cxfconfiguer=#mycxfconfiguer”而不是“cxfEndpointConfigurer=#mycxfconfiguer”作为camel属性