我無法將參數從應用程序傳遞到處理程序。 在EJB我打電話給我的web服務:將參數從EJB傳遞到SOAP處理程序解析器
MyNameWSService service = new MyNameWSService(URL); //MyNameWSService = class with annotation @WebServiceClient
((BindingProvider)service.getMyNameWSPort()).getRequestContext().put("login", login);
HeaderHandlerResolver handlerResolver = new HeaderHandlerResolver();
service.setHandlerResolver(handlerResolver);
service.getMyNameWSPort().callMyMethod();
在HeaderHandlerResolver我嘗試閱讀我的參數 「登錄」,但它是空:
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {
public boolean handleMessage(SOAPMessageContext smc) {
...
System.out.println(smc.get("login")); //it's null, why?
}
...
}
我爲了增加WS創建HeaderHandlerResolver - 肥皂請求和登錄/密碼的安全標題可能會有所不同。
import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.handler.PortInfo;
public class HeaderHandlerResolver implements HandlerResolver {
public List<Handler> getHandlerChain(PortInfo portInfo) {
List<Handler> handlerChain = new ArrayList<Handler>();
HeaderHandler hh = new HeaderHandler();
handlerChain.add(hh);
return handlerChain;
}
}
貴'HeaderHandlerResolver'同時實現[javax.xml.ws.handler.HandlerResolver](http://docs.oracle .com/javase/8/docs/api/javax/xml/ws/handler/HandlerResolver.html)和[javax.xml.ws.handler.Handler](http://docs.oracle.com/javase /8/docs/api/javax/xml/ws/handler/Handler.html)?或許你可以展示更多你的實現...... –
HeaderHandlerResolver的代碼被添加到文章 – OGSL
當你調用'... getRequestContext()。put(「login」,login)時,你怎麼知道'login'不是null? '? –