5
的Java - JDK 1.6.0.7 - WSGEN -version:JAX-WS RI 2.2.3-b01-Java(Web服務 - SOAP) - 如何在客戶端添加SOAP處理程序並使MTOM正確?
我有以下問題:
SOAPBinding binding = (SOAPBinding)((BindingProvider)port).getBinding();
binding.setMTOMEnabled(true);
List<Handler> handlerChain = new ArrayList<Handler>();
handlerChain.addAll(binding.getHandlerChain());
handlerChain.add(new MyHandlerSecurity("admin", "admin"));
binding.setHandlerChain(handlerChain);
這段代碼的SOAPHEADER是正確的,但附件始終是內嵌的base64文本。
//List<Handler> handlerChain = new ArrayList<Handler>();
//handlerChain.addAll(binding.getHandlerChain());
//handlerChain.add(new MyHandlerSecurity("admin", "admin"));
//binding.setHandlerChain(handlerChain);
當HandlerChain的已被註釋掉,你會看到該附件作爲XOP參考,但沒有SOAPHEADER,因此,客戶沒有通過認證......
我如何可以添加一個處理程序客戶端並啓用MTOM正確?
當我需要在ws客戶端中設置loggingHandler(註銷請求/響應的東西)時,此答案對我來說是有用的。謝謝。 – riskop
從handleFault方法返回false的結果是什麼?那麼從getHeaders方法返回null呢? –
@NicholasDiPiazza返回false將阻止消息處理,你基本上是說「如果這個處理程序失敗丟棄整個消息」,請查看https://docs.oracle.com/javaee/5/api/javax/xml/ws/handler/ Handler.html#handleFault(C) 當在getHeaders中返回null時,你是「這個處理程序沒有處理任何特定的頭文件」,這就是爲什麼我們有自己的處理程序解析程序,回顧性地你可能通過返回正確的標題,但我還沒有嘗試過https://docs.oracle.com/javaee/5/api/javax/xml/ws/handler/soap/SOAPHandler.html#getHeaders() –