CXF入門教程(4) -- 設定上下文連線屬性
阿新 • • 發佈:2018-12-14
我們可以使用 JAX-WS 上下文來自定義客戶端代理的屬性。特別地,上下文可以用來修改連線屬性以及通過協議頭髮送資料。例如,我們可以用上下文新增一個SOAP頭,請求訊息和響應訊息都可以新增。客戶端支援下列型別的上下文:
- Request context(請求上下文) - 在客戶端,請求上下文使我們能夠設定影響出站訊息的屬性。請求上下文屬性是應用到特定埠例項的,並且一旦設定了這些屬性,它們將對該埠隨後做出的每一個操作呼叫都有效,直到某屬性被顯式地消除。例如,我們可以使用請求上下文屬性來設定連線超時,或在資料頭中初始化要傳送的資料。
- Response context(響應上下文)
設定請求上下文
要設定一個特殊的請求上下文屬性 ContextPropertyName,其值為 PropertyValue 可以用下面的程式碼:
Setting a Request Context Property on the Client Side// Set request context property.
java.util.Map<String, Object> requestContext =
((javax.xml.ws.BindingProvider)port).getRequestContext();
requestContext.put(ContextPropertyName, PropertyValue);
// Invoke an operation.
port.SomeOperation();
我們需要將埠物件對映為 javax.xml.ws.BindingProvider ,以此來獲取請求上下文。請求上下文字身是一個 java.util.Map<String, Object> 型別,也就是一個有著String型別的“鍵”和任意型別的“值”的雜湊表。使用
讀取響應上下文
要檢索一個特定的響應上下文屬性 ContextPropertyName 使用如下程式碼:
Reading a Response Context Property on the Client Side// Invoke an operation.
port.SomeOperation();
// Read response context property.
java.util.Map<String, Object> responseContext =
((javax.xml.ws.BindingProvider)port).getResponseContext();
PropertyType propValue = (PropertyType) responseContext.get(ContextPropertyName);
響應上下文的型別是 java.util.Map<String, Object> ,也是一個有著String型別的“鍵”和任意型別的“值”的雜湊表。我們可以使用 java.util.Map.get() 來獲取響應上下文屬性雜湊表中的一個條目。
受支援的上下文型別
CXF支援下列上下文屬性:
上下文屬性名 | 上下文屬性型別 |
---|---|
org.apache.cxf.ws.addressing.JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES | org.apache.cxf.ws.addressing.AddressingProperties |
本文參考自: http://cxf.apache.org/docs/developing-a-consumer.html
轉載自NearEast