2012-04-04 103 views
2

我的客户的Spring上下文:CXF JAXRS - http-conf:客户端ReceiveTimeout不起作用?

<http-conf:conduit name="*.http-conduit"> 
    <http-conf:authorization> 
     <sec:AuthorizationType>Negotiate</sec:AuthorizationType> 
    </http-conf:authorization> 
    <http-conf:client ReceiveTimeout="0"></http-conf:client> 
</http-conf:conduit> 

服务器继续处理请求,但是客户端超时60000毫秒后,这是默认的超时值。任何帮助?

更新(2012年4月10日):

尝试了以下的方法。

ClientProxyImpl client = (ClientProxyImpl) alertService; 
    Client proxy = ClientProxy.getClient(alertService); 

    HTTPConduit conduit = (HTTPConduit) proxy.getConduit(); 

    HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); 
    httpClientPolicy.setConnectionTimeout(30000); 
    httpClientPolicy.setReceiveTimeout(60000); 

    conduit.setClient(httpClientPolicy); 

得到以下例外。

Exception in thread "main" java.lang.ClassCastException: org.apache.cxf.jaxrs.client.ClientProxyImpl cannot be cast to org.apache.cxf.frontend.ClientProxy 
at org.apache.cxf.frontend.ClientProxy.getClient(ClientProxy.java:120) 

感谢任何帮助,让这项工作。

感谢

回答

0

尝试改用:

<http-conf:conduit name="http://hostname.com/.*"> 

要看看它是否捡到的方式。 Rest并没有真正具有端点名称的概念,而像JAX-WS这样的概念可能无法匹配。

+0

这并没有帮助。在cxf-user邮件列表中发现了几个这样的实例,并且显然以编程方式设置这个实例就是解决问题的方法。现在尝试,但混合弹簧和非弹簧版本是一个痛苦,需要重新考虑一点东西。感谢您的答复。 – domino 2012-04-04 15:28:29

+0

丹尼尔,尝试了编程方法,但我想我错过了一些东西,或者它只适用于jax-ws而不是jax-rs。如果您有任何建议,请告诉我。谢谢。 – domino 2012-04-10 12:26:48

+0

更新了原始帖子,更多详情。 – domino 2012-04-10 12:53:00