📄 emisactionproxyfactory.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 + -