我是JAX-WS的新手,有一件我不明白的東西。JAX-WS和BASIC認證,當用戶名和密碼在數據庫中
關於如何設置JAX-WS安全性有很多教程,但在幾乎所有情況下,BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY存儲在一些.xml文件中(取決於我認爲的容器) - 它們是「硬編碼」的。這就是我沒有得到的。如何通過將BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY與數據庫中的用戶名和密碼進行比較來驗證Web服務客戶端?我試圖在客戶端設置BindingProvider.USERNAME_PROPERTY和BindingProvider.PASSWORD_PROPERTY這樣的:
ShopingCartService scs = new ShopingCartService(wsdlURL, name);
ShopingCart sc = scs.getShopingCartPort();
Map<String, Object> requestContext = ((BindingProvider)sc).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, userName);
requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
sc.someFunctionCall();
,然後在服務器端獲取這樣的:
@Resource
WebServiceContext wsContext;
@WebMethod
public void someFunctionCall() {
MessageContext mc = wsContext.getMessageContext();
mc.get(BindingProvider.USERNAME_PROPERTY);
mc.get(BindingProvider.PASSWORD_PROPERTY);
}
但我總是空的,我沒「T成立於XML什麼,web服務工作得很好,但我不能讓這些變量:(
我在Java 1.6的,Tomcat的6和JAX-WS同時運行。
感謝您使用密碼從數據庫驗證用戶的任何幫助,非常感謝, 謝謝。
我也試過在一種SOAPHandler檢查BindingProvider.USERNAME_PROPERTY,仍然無效。 – ahoge 2009-10-23 12:50:28