/*
* Berlin Brown
* HibernateUtilPlugin.java
*
* Tested for hibernate 3.1
*/
package org.spirit.util;
import java.net.URL;
import javax.servlet.ServletException;
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
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;
public class HibernateUtilPlugin implements PlugIn {
private Configuration config;
private SessionFactory factory;
private String path = "/hibernate.cfg.xml";
private static Class className = HibernateUtilPlugin.class;
public static final String KEY_NAME = className.getName();
private static Log log = LogFactory.getLog(className);
public void setPath(String path) {
this.path = path;
}
public void init(ActionServlet servlet, ModuleConfig modConfig) throws ServletException {
try {
URL url = HibernateUtilPlugin.class.getResource(path);
System.out.println("Found hibernate URL at=" + url);
System.out.println("KeyName=" + KEY_NAME);
config = new Configuration().configure();
factory = config.buildSessionFactory();
servlet.getServletContext().setAttribute(KEY_NAME, factory);
log.info("Hibernate plugin setup complet=");
} catch (MappingException e) {
log.error("mapping error", e);
throw new ServletException();
} catch (Exception e) {
log.error("hibernate error", e);
throw new ServletException();
}
}
public void destroy() {
try {
factory.close();
} catch (Exception e) {
log.error("unable to close factory", e);
}
}
}