⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 authenticationhandler.java

📁 Java使用webservice上传文件的例子
💻 JAVA
字号:
package com.jones.web.service.authentication.impl;

import org.apache.log4j.Logger;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.exchange.InMessage;
import org.codehaus.xfire.fault.XFireFault;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
import org.jdom.Namespace;

import com.jones.web.service.authentication.AuthenticationManager;

/**
 * web服务身份认证处理器
 * 
 * @author gubiao
 * 
 */
public class AuthenticationHandler extends AbstractHandler {
	
	private static final Logger log = Logger.getLogger(AuthenticationHandler.class);

	private AuthenticationManager authenticationManager;
	
	public void setAuthenticationManager(
			AuthenticationManager authenticationManager) {
		this.authenticationManager = authenticationManager;
	}
	
	public void invoke(MessageContext context) throws Exception {

		log.info("文件上传web service被调用,对调用者进行身份校验!................");
		
		InMessage message = context.getInMessage();

		final Namespace TOKEN_NS = Namespace.getNamespace("jones",
				"http://services.web.jones.com");

		if (message.getHeader() == null) {
			
			log.error("SOAP消息没有头信息,校验失败!");
			
			throw new XFireFault("SOAP消息没有头信息,校验失败!",
					XFireFault.SENDER);
		}

		Element token = message.getHeader().getChild("AuthenticationToken",
				TOKEN_NS);
		if (token == null) {
			
			log.error("SOAP消息头信息中为包含校验所需数据,校验失败!");
			
			throw new XFireFault("SOAP消息头信息中为包含校验所需数据,校验失败!",
					XFireFault.SENDER);
		}

		String username = token.getChild("username", TOKEN_NS).getValue();
		String password = token.getChild("password", TOKEN_NS).getValue();

		if (username == null || password == null){
			
			log.error("SOAP头信息中的用户名或密码不存在,校验失败!");
		
			throw new XFireFault("SOAP头信息中的用户名或密码不存在,校验失败!",
					XFireFault.SENDER);
		}

		/**
		 * 校验调用者
		 */
		
		if (!this.authenticationManager.authenticate(username, password)){
			
			log.error("校验失败,请检查用户名和密码!");
		
			throw new XFireFault(new Exception(
					"校验失败,请检查用户名和密码!"),
					XFireFault.SENDER);
		}

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -