Webservice本身的实时性就不是很好,并且Webservice验证也会降低性能成本,简单的 SSL 点对点加密有时是更好的解决方案,但安全性比较低。具体安全性和性能要求需要根据实际需求决定。
http://www.ibm.com/developerworks/cn/java/j-jws6/ 一文很好的阐述Webservice验证所造成的性能问题。
Ws-security简单内容介绍见:http://www.microsoft.com/china/MSDN/library/WebServices/WebServices/HowASP.NETWebServicesWork.mspx?mfr=true
XFire Web Service验证方案 见:http://blog.csdn.net/qiao000_000/article/details/5592117
测试中遇到几个问题:
1、client端除了需要xfire基本包外还需要commons-httpclient-3.0.jar。
2、第二种方式是通过addOutHandler和addInHandler加入的验证,里面的内容是通过JDOM拼出来的,不是固定的。
里面client的可以封装成一个方法:
public 接口 getUserService(String userName, String password,
String serviceURL) throws MalformedURLException {
Service srvcModel = new ObjectServiceFactory().create(接口.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
.newInstance().getXFire());
接口 service = (接口) factory.create(srvcModel, serviceURL);
XFireProxy proxy = (XFireProxy) Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
client.addOutHandler(new ClientAuthenticationHandler(userName,password));
return service;
}
调用方法: 接口.方法名(参数)