我是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