日期:2014-05-18  浏览次数:20543 次

struts2.3.7自定义plugin
struts2.1.*中可自定义plugin,但是到了struts2.3.7中,这个implment的包就没有了!
请问如何自定义,并让程序在服务器启动晚够自动执行某一个类?

具体说明一下:
我在使用Struts2.1.*的时候,可以自定义Plugin


import java.io.File;
import javax.servlet.ServletException;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
import org.ds.util.XMLHandler;

public class GenXMLPlugin implements PlugIn {
private static XMLHandler xmlhandler;
public XMLHandler getXmlhandler() {
return xmlhandler;
}

public   void setXmlhandler(XMLHandler xmlhandler) {
GenXMLPlugin.xmlhandler = xmlhandler;
}

public void destroy() {
System.out.println("in genXMlPlugin destory method");
}

public void init(ActionServlet arg0, ModuleConfig arg1) throws ServletException {

System.out.println("in genXMlPlugin init method");

File f1 = new File(arg0.getServletContext().getRealPath("js" + "/tree1.xml"));
File f2 = new File(arg0.getServletContext().getRealPath("js" + "/tree2.xml"));
File f3 = new File(arg0.getServletContext().getRealPath("js" + "/tree3.xml"));
File menu = new File(arg0.getServletContext().getRealPath("js" + "/menu.xml"));



if(xmlhandler!=null)
{
System.err.println("生成 3 棵树。。。。");
f1 = xmlhandler.createXMLFile(f1,new Long(1));
f2 = xmlhandler.createXMLFile(f2,new Long(2));
f3= xmlhandler.createXMLFile(f3,new Long(3));
menu = xmlhandler.createMenuFile(menu);
}

}

}



class GenXMLPlugin implements PlugIn

现在却没有这个了,就是说struts2.3.7 没有了  import org.apache.struts.action.PlugIn;这个包了.

求教一个解决方案.谢谢!



struts Plugin 2.3.7 implements?

------解决方案--------------------
你这个类的生命是持续的,还是短暂的。
短暂的话,写个Servlet配置到web.xml中并设置load-on-startup,这个地方如果想要使用Spring托管的DAO的话,还得配置个代理Servlet如果是持续的话

public class DelegatingSrvServletProxy extends GenericServlet {

private static final long serialVersionUID = 9175652453628779862L;

private String targetBean;
private Servlet proxy;

@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
proxy.service(req, res);

}
@Override  
public void init() throws ServletException {   
this.targetBean = getServletName();   
getServletBean(