2012-11-29 222 views
2

我如何設置JAXWS客戶端超時,我使用Jboss 5.1。 我正在試圖用JAXWS客戶端超時Jboss

bp.getRequestContext().put("com.sun.xml.ws.connect.timeout", 100); 
bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 100); 

但它不起作用。它適用於獨立客戶端。

當我試圖用

bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 100); 

I.ve得到org.jboss.ws.core.WSTimeoutException:後超時:100毫秒,但後300(3 * 100毫秒)heppening。

任何人都可以幫助我解決這個問題。

回答

0

雖然這看起來可能是您的疏忽,但JAX-WS超時的設置可能取決於您正在構建的特定RI。

你可以嘗試這些設置(它們是成對成對使用)

BindingProviderProperties.REQUEST_TIMEOUT 
    BindingProviderProperties.CONNECT_TIMEOUT 

BindingProviderProperties應該從com.sun.xml.internal.WS.client

或者字符串

javax.xml.ws.client.connectionTimeout 
    javax.xml.ws.client.receive timeout 

所有性質被放在getRequestContext()以毫秒爲單位。

BtW,你怎麼能夠毫秒沒有代碼:)?

0

JAXWS使用JAXB編組解組

在容器中,可能需要更多時間,因爲它是JAXContext掃描類路徑。

如果是這樣的情況下,嘗試的JAXBContext的渴望初始化:

將JBossWS的 每個服務的第一個方法調用時可以執行不同,下面的人當巨大的WSDL合同(與 數百臺進口的XML架構)被引用。這是由於在第一次調用 期間在內部執行了一堆 操作,其結果數據隨後在隨後的 期間被緩存和重用。雖然這通常不是問題,但您可能對 感興趣,在每次調用時它們的性能幾乎相同。這可能是 實現org.jboss.ws.eagerInitializeJAXBContextCache 系統屬性設置爲true,無論在服務器端(在JBoss啓動 腳本),並在客戶端(一個方便的固定在 org.jboss.ws.Constants可用)。創建JAXBContext通常是 ,負責第一次調用時堆棧所需的大部分時間;這個特性使得JBossWS在第一次調用被處理之前試圖快速創建並緩存JAXB上下文。

http://www.mastertheboss.com/javaee/jboss-web-services/web-services-performance-tuning