用Struts的plugIn接口装载hibernate




在原有项目的基础上导入hibernate相关的jar包,主要有:hibernate3.jar;antlr-2.7.6.jar;commons-collections-3.1.jar;dom4j-1.6.1.jar;javassist-3.9.0.GA.jar;jta-1.1.jar;slf4j-api-1.5.8.jar;slf4j-jcl-1.5.8.jar

在src目录下建一个hibernate.cfg.xml文件:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>

    <session-factory>
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
        <property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:orcl</property>
        <property name="connection.username">xzf</property>
        <property name="connection.password">1234</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    
    </session-factory>

</hibernate-configuration>


建立SessionFactory类:

package blog;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class SessionFactoryManager {
    
    private static String hibernateConfigFile = null;
    
    public static void setHibernateConfigFile(String hibernateConfigFile) {
        SessionFactoryManager.hibernateConfigFile = hibernateConfigFile;
    }

    private static Configuration configuration = null;
    private static SessionFactory sessionFactory = null;
    
    /*static{
        openSessionFactory();
    }*/
    
    public static SessionFactory openSessionFactory(){
        System.out.println("in openSessionFactory method11111!!!!!!!!");
        configuration =new Configuration().configure(hibernateConfigFile);
        System.out.println("in openSessionFactory method22222!!!!!!!!");
        sessionFactory = configuration.buildSessionFactory();
        System.out.println("in openSessionFactory method3333!!!!!!!!");
        return sessionFactory;
    }
    
    public static void closeSessionFactory(){
        if (sessionFactory != null && sessionFactory.isClosed() == false) {
            sessionFactory.close();
        }
    }   
}


建一个继承自PlugIn接口的类HibernatePlugin:

package blog;

import javax.servlet.ServletException;

import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;

public class HibernatePlugin implements PlugIn {

    private String hibernateConfigFile = null;
    
    public String getHibernateConfigFile() {
        return hibernateConfigFile;
    }

    public void setHibernateConfigFile(String hibernateConfigFile) {
        this.hibernateConfigFile = hibernateConfigFile;
    }

    @Override
    public void destroy() {
        System.out.println("in destory method!");
        SessionFactoryManager.closeSessionFactory();

    }

    @Override
    public void init(ActionServlet servlet, ModuleConfig config)
            throws ServletException {
        System.out.println("in init method!");
        //1.读取配置文件
        SessionFactoryManager.setHibernateConfigFile(hibernateConfigFile);
        //2.打开sessionFactory
        SessionFactoryManager.openSessionFactory();
        System.out.println("initialization is over!");
    }

}

在struts-config.xml中加入对插件的支持:

 <plug-in className="cn.itcast.HibernatePlugin">
        <set-property property="hibernateConfigFile" value="/hibernate.cfg.xml"/>
    </plug-in>


这样当应用被启动时插件就会被加载进来。





posted @ 2012-07-19 15:17  xzf007  阅读(134)  评论(0编辑  收藏  举报