plugin 式
根据Struts文献“A plugin is a configuration wrapper for a module-specific resource or service that needs to be notified about application startup and shutdown events“这句话的意思当你启动或者关闭struts时,Struts自动调用继承PlugIn接口的类.
也就是当我在一个WEB应用程序时要使用了Hibernate,一旦启动了我的WEB应用服务,我就要初始化Hibernate,因此执行我的第一个请求。反之,关闭我的的WEB应用服务,也就关闭(释放)了Hibernate。
我们执行这个Hibernate需要两个简单的步骤:
创造一个可执行PlugIn接口, 如下:public class HibernatePlugIn implements PlugIn{
private String configFile;
// This method will be called at application shutdown time
public void destroy() {
System.out.println("Entering HibernatePlugIn.destroy()");
//Put hibernate cleanup code here
System.out.println("Exiting HibernatePlugIn.destroy()");
}
//This method will be called at application startup time
public void init(ActionServlet actionServlet, ModuleConfig config)
throws ServletException {
System.out.println("Entering HibernatePlugIn.init()");
System.out.println("Value of init parameter " +
getConfigFile());
System.out.println("Exiting HibernatePlugIn.init()");
}
public String getConfigFile() {return name;
}
public void setConfigFile(String string) {
configFile = string;
}
}
这个继承PlugIn接口的类要执行两个方法:init() and destroy(),init()方法是在用于服务启动时执行,destroy()方法是在关闭时执行,并且Struts允许你带参数,通过参数,你可以HibernatePlugIn类中在创建像javabean中的setter方法。
在struts-config.xml中增加PlugIn:
<struts-config>
...
<!-- Message Resources -->
<message-resources parameter=
"sample1.resources.ApplicationResources"/>
<!-- Declare your plugins -->
<plug-in className="com.sample.util.HibernatePlugIn">
<set-property property="configFile"
value="/hibernate.cfg.xml"/>
</plug-in>
</struts-config>
给你的继承PlugIn(HibernatePlugIn)类,赋予初始化参数,需要增加一个<set-property>元素,例如,例子中要传输的参数为"/hibernate.cfg.xml"。