客户端代码:
package clienttest;
import java.util.ArrayList;
import form.User;
public interface DxTest1 {
public ArrayList<User> getDx();
//public String getD(String a);
}
package clienttest;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Proxy;
import java.util.List;
import java.util.Properties;
import org.apache.ws.security.handler.WSHandlerConstants;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.security.wss4j.WSS4JOutHandler;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.util.dom.DOMOutHandler;
import form.User;
public class ClientTest {
private WSS4JOutHandler wsOut;
private Service srvcModel;
private Client client;
public void testClient() throws Exception {
// 第三种方式,也是常用的一种方式,直接根据WEBSERVICE地址来进行调用
srvcModel = new ObjectServiceFactory().create(DxTest1.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String URL = "http://localhost:8080/server_sec/services/Test";
try {
DxTest1 srvc = (DxTest1) factory.create(srvcModel,URL);
client = ((XFireProxy) Proxy.getInvocationHandler(srvc)).getClient();
client.addOutHandler(new DOMOutHandler());
Properties properties = new Properties();
String actions =WSHandlerConstants.SIGNATURE;
properties.setProperty(WSHandlerConstants.ACTION,actions);
properties.setProperty(WSHandlerConstants.USER,"ws_security");
properties.setProperty(WSHandlerConstants.SIG_PROP_FILE,"outsecurity.properties");
//properties.setProperty(WSHandlerConstants.ENC_PROP_FILE,"/outsecurity.properties");
//properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PASSWORD_TEXT);
properties.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());
properties.setProperty(WSHandlerConstants.SIG_KEY_ID,"IssuerSerial");
//wsOut.setProperty(WSHandlerConstants.TTL_TIMESTAMP,"30");
wsOut = new WSS4JOutHandler(properties);
client.addOutHandler(wsOut);
List<User> list = srvc.getDx();
for(int i=0;i<list.size();i++){
User dto =(User)list.get(i);
System.out.println("-----"+dto.getId());
System.out.println("-----"+dto.getName());
}
client.close();
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
try{
ClientTest t=new ClientTest();
t.testClient();
//t.getPro();
}catch(Exception e){e.printStackTrace();}
}
}
package clienttest;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.ws.security.WSPasswordCallback;
public class PasswordHandler implements CallbackHandler {
private Map passwords = new HashMap();
public PasswordHandler() {
passwords.put("ws_security","keypassword");
}
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
System.out.println("---------Handling Password!------------");
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
String id = pc.getIdentifer();
System.out.println("--------id:"+id+"--------password:"+(String) passwords.get(id));
pc.setPassword((String)passwords.get(id));
}
}
package form;
public class User {
String id="";
String name="";
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
分享到:
相关推荐
XFire中实现WS-Security完整编 Spring+xFire+wss4j配置Helloworld实例 完整说明文档 Myeclipse项目 服务端工程 客户端工程
Spring+xFire+wss4j配置Helloworld完整Demo.rar
eclipse下spring+xfire实现ws-security的简单例子,包含服务器和客户端的代码,实现用户名/密码.数字签名和报文加密的安全认证,唯一不足的是没有实现数字签名和报文加密的混合模式(可能是密匙文件的问题,正在努力中),...
XFire中实现WS-SecurityXFire中实现WS-SecurityXFire中实现WS-Security
基于XFire实施WS-Security,学习web service的材料
xfire1.2.6 ws-security示例,也就是让里面的例子跑起来,网上都没这个教程,所以我就花了点点时间做了一下
NULL 博文链接:https://zhaoshijie.iteye.com/blog/839050
xfire 实施ws-security代码,多线程发送邮件工具类代码
许多的相关示例根本不能运行,这个示例不单能直接运行,而且还有教程,见 http://blog.csdn.net/guosydragon/archive/2010/05/01/5549076.aspx及相关章节
xfire+spring+安全认证,包含服务端和客户端,xfire jar包可以从我的资源下面下或网上很多。
1 支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等; 2 使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现; 3 容易上手,可以方便快速地从pojo发布服务; 4 支持...
xfire+spring+webservice+client xfire+spring+webservice+client xfire+spring+webservice+client
xfire+spring开发webservice 很不错的文档
xfire+spring+webservice xfire+spring+webservice xfire+spring+webservice xfire+spring+webservice
JSP+Servlet+SqlServer+WebService(XFire)E-家园网站 非常适合自学使用
xfire+struts2的资源包 共享下载
从自己写的例子里提取,包含了XFire+WebService的所有jar包,整理不谢
webservice中用到的jar,xfire-jsr181-api-1.0-M1.jar,xfire-jsr181-api-1.0-M1.jar
使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service使用XFire+Spring构建Web Service