2012-04-04 96 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