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

📄 easyjwebfiltertobeanproxy.java.svn-base

📁 EasyJWeb是基于java技术
💻 SVN-BASE
字号:
package com.easyjf.web.security.acegi;

import javax.servlet.FilterConfig;

import org.acegisecurity.util.FilterToBeanProxy;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;

import com.easyjf.container.Container;
import com.easyjf.container.impl.SingletonContainerLoader;
import com.easyjf.container.impl.SpringContainer;
import com.easyjf.web.ActionServlet;
import com.easyjf.web.Globals;

/**
 * Extend Acegi's FilterToBeanProxy , obtain Spring's ApplicationContext through EasyJWeb .
 * 
 * <p>
 * <b>Attention :</b>
 * 
 * There are still a lot of problem to be resolve .
 * 
 * 1.EasyJWeb框架的初始化存在非常致命的问题,初始化逻辑写死在 {@link ActionServlet} 中使得无法在其他地方如 Filter,Listener 中对框架进行初始化。
 * 
 * 2.无法透明的加载配置文件。
 * 
 * <p>
 * <b>Resolvent</b>
 * 
 * 1.设计一个初始化框架的Loader,把初始化框架的工作委托给Loader。
 * 
 * 2.设计一个通用的ResourceLoader,封装从文件系统和类路径加载资源的细节,可以参考Spring对资源的处理。
 * 
 * <p>
 * 在InnerContainer中有一个对parent container的引用,目前主要是解决Acegi的问题,通过该类可以解决这个问题。
 * 
 * 类似的问题都可以通过这种方式解决,没有必要在InnerContainer中增加对parent container的引用,引起框架结构的混乱。
 * 
 * 
 * @author ecsoftcn@hotmail.com
 * 
 * @version $Id: EasyJWebFilterToBeanProxy.java, 2007-4-15 上午03:10:52 Tony Exp $
 */
public class EasyJWebFilterToBeanProxy extends FilterToBeanProxy {

	/*
	 * @see org.acegisecurity.util.FilterToBeanProxy#getContext(javax.servlet.FilterConfig)
	 */
	@Override
	protected ApplicationContext getContext(FilterConfig filterConfig) {

		String configFile = filterConfig.getInitParameter(Globals.CONTAINER_CONFIG_LOCATION);
		if (configFile == null || configFile.trim().length() == 0) {
			throw new IllegalArgumentException(Globals.CONTAINER_CONFIG_LOCATION + " can't be null !");
		}

		//-------------------- 构造Container的逻辑委托给SingletonContainerLoader执行 ---------------------
		// Document doc = null;
		// try {
		// doc = new SAXReader().read(SingletonContainerLoader.class.getResourceAsStream(configFile));
		// } catch (DocumentException e) {
		// throw new IllegalArgumentException(configFile + "is not a valid config file !");
		// }
		//
		// DefaultContainer container = new DefaultContainer();
		// container.registerBeanDefinitions(BeanConfigReader.parseBeansFromDocument(doc));
		// container.refresh();
		//--------------------------------------------------------------------------------------------- 
		
		Container container = SingletonContainerLoader.getInstance(configFile);

		SpringContainer springContainer = (SpringContainer) container.getBean(Globals.SPRING_INTEGERATION_CONTAINER);
		BeanFactory factory=springContainer.getBeanFactory();
		if(factory instanceof ApplicationContext)return (ApplicationContext)factory;
		else return null;
	}

}

⌨️ 快捷键说明

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