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

📄 emisactionproxyfactory.java

📁 j2ee项目应用 使用struts hibernate构建的轻量级j2ee项目
💻 JAVA
字号:
package com.emis.framework;

import java.util.HashMap;
import java.util.Iterator;

import javax.servlet.ServletException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;

import com.emis.util.Constants;

/**
 * 工厂实现类,还实现插件接口 一个Struts应用可以包含一个或多个插件。
 * 在Struts应用启动时,Struts框架调用每个插件类的init()方法进行初始化。 在插件的初始化阶段,可以完成一些初始化操作,如建立数据库连接。
 * 
 * @author Administrator
 * 
 */
public final class EmisActionProxyFactory implements IEmisFactory, PlugIn {
	Log log = LogFactory.getLog(this.getClass());

	private ActionServlet servlet = null;

	protected ModuleConfig moduleConfig = null;

	protected HashMap proxys = new HashMap(); // 代理缓冲池
	
	public IEmisActionProxy createService(String key) throws Exception {
		IEmisActionProxy instance = null;
		synchronized (proxys) {
			instance = (IEmisActionProxy) proxys.get(key);
			if (instance != null) {
				if (log.isTraceEnabled()) {
					log.trace("  返回已存在的业务代理实例!");
				}
				return (instance);
			}

			if (log.isTraceEnabled()) {
				log.trace("  创建一个新的业务代理实例!");
			}

			try {
				instance = (IEmisActionProxy) Class.forName(key).newInstance();
				instance.setServletContext(servlet.getServletContext());
			} catch (Exception e) {
				log.error("创建Proxy失败!");
				return (null);
			}

			/**
			 * 将Action实例添加到actions集合中
			 */
			proxys.put(key,instance);
		}
            
		return (instance);
	}
	
	public void destroy() {
		synchronized (this.proxys) {
			Iterator proxys = this.proxys.values().iterator();
			while (proxys.hasNext()) {
				IEmisActionProxy proxy = (IEmisActionProxy) proxys.next();
				proxy.setServletContext(null);
			}
			this.proxys.clear();
		}
		this.servlet=null;
	}
	
	public void init(ActionServlet servlet, ModuleConfig moduleConfig) throws ServletException {
		this.servlet = servlet;
		this.moduleConfig = moduleConfig;

		this.servlet.getServletContext().setAttribute(
				Constants.EMIS_FACTORY_KEY,this);

		synchronized (proxys) {
			proxys.clear();
		}

	}
	
	public ActionServlet getServlet() {
		return servlet;
	}

	public void setServlet(ActionServlet servlet) {
		this.servlet = servlet;
	}
}

⌨️ 快捷键说明

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