J2EE社区

苟有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒.
posts - 241, comments - 318, trackbacks - 0, articles - 16

java Web Service axis (实例五) 安全验证

Posted on 2010-08-19 09:51 xcp 阅读(1449) 评论(0)  编辑  收藏
http://dev.firnow.com/course/4_webprogram/php/phpjs/20100721/480316.html  里面做得比较详细


我自己做了一个简单的。。。
1.资料绑定类ResourceManager

 
package cn.gov.luzhou.SiteServer.user.business.util;
import java.util.ResourceBundle;
public class ResourceManager 
{
    
private static ResourceBundle r = null;
    
static 
    {
        r 
= ResourceBundle.getBundle("serviceAuthor");
    }
    
public final static String getValue(String key){
        
return r.getString(key);
    }
    
public final static void refresh()
    {
        r 
= ResourceBundle.getBundle("BasicConfig");
    }
    
public  static void main(String args[])
    {
        System.out.println(getValue(
"egssadmin"));
    }
}


2.Hander处理类    
package cn.gov.luzhou.SiteServer.user.business.webService;

import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;

import cn.gov.luzhou.SiteServer.user.business.util.ResourceManager;
import cn.gov.luzhou.SiteServer.user.business.util.SignUtil;

/**
 *
 * 
@author  向才鹏
 * 
@version  1.0
 * Copyright (C), 2009,www.soujava.cn所有
 * Date: Aug 18, 2010 4:27:20 PM
 
*/
public class AutherHandle extends BasicHandler {
    
/**
     *
     * 
@author  向才鹏
     * Aug 18, 2010 4:28:07 PM
     
*/
    
private static final long serialVersionUID = 1L;

    @SuppressWarnings(
"unchecked")
    
public void invoke(MessageContext msgContext) throws AxisFault{
        String userID 
= msgContext.getUsername();
        String psw 
= msgContext.getPassword();
        
//System.out.println("CommandHandle: userID:["+userID+"] psw:["+psw+"]");
        if(userID != null && psw != null){
           String value  
= ResourceManager.getValue(userID);
           String value2 
= "";
           
try {
               value2
= new String(SignUtil.decryptBASE64(psw));
            } 
catch (Exception e) {
                e.printStackTrace();
            }
           
if(!value2.equals(value)){
               
throw new AxisFault("Illegal user.",new Exception("你没有访问权限"));
           }
        }
else{
            
throw new AxisFault("Illegal user.",new Exception("请加上访问权限,如需要帮助联系技术支持部!"));
        }
    }
}


3.deploy.wsdd
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
     
<handler name="track" type="java:cn.gov.luzhou.SiteServer.user.business.webService.AutherHandle"></handler>
    
<service name="UserService" provider="java:RPC">
        
<parameter name="className" value="cn.gov.luzhou.SiteServer.user.business.webService.UserService"/>
        
<parameter name="allowedMethods" value="*"/>
        
<typeMapping qname="my:User"     xmlns:my="urn:UserService" 
            encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
            deserializer
="org.apache.axis.encoding.ser.BeanDeserializerFactory" type="java:cn.gov.luzhou.SiteServer.user.web.vo.SysUserVo"/>
        
<requestFlow>
            
<handler type="track"/>
        
</requestFlow>
        
<responseFlow>
            
<handler type="track"/>
        
</responseFlow>
        
    
</service>
</deployment>

4.Clinet类
package three;

import java.rmi.RemoteException;

import org.apache.axis.AxisFault;

import util.SignUtil;

public class T1 {

    public static void main(String[] args) {
        UserServiceSoapBindingStub binding;
        try {
            binding = (three.UserServiceSoapBindingStub) new UserServiceServiceLocator().getUserService();
            binding.setUsername("egssadmin");
            try {
                binding.setPassword(SignUtil.encryptBASE64("xcp12300".getBytes()));
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (javax.xml.rpc.ServiceException jre) {
            if (jre.getLinkedCause() != null)
                jre.getLinkedCause().printStackTrace();
            throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
        }
        
        // Time out after a minute
        binding.setTimeout(60000);
        User value = null;
        try {
            value = binding.login("admin1","111111");
        } catch (AxisFault fault) {
            System.out.println("1Error : " + fault.getMessage());
        }  catch (RemoteException e) {
            e.printStackTrace();
        }
        
        System.out.println(value.getRealName());
    }
}



最后:webservice-之使用axis+spring开发
http://wenku.baidu.com/view/e8a411225901020207409c62.html


名称: ♪4C.ESL | .↗Evon
口号: 遇到新问题♪先要寻找一个方案乄而不是创造一个方案こ
mail: 联系我



只有注册用户登录后才能发表评论。


网站导航: