package cn.myexam.hibernate;import javax.naming.Context; 
import javax.naming.InitialContext; 
import javax.naming.NamingException; 
import javax.servlet.ServletException; import org.hibernate.HibernateException;import org.apache.struts.action.ActionServlet; 
import org.apache.struts.action.PlugIn; 
import org.apache.struts.config.ModuleConfig; 
public class InitHibernate implements PlugIn { private Context ctx; public void destroy() {

if (ctx != null) { 
try { ctx.unbind("HibernateSessionFactory"); 
} catch (NamingException e) { 
e.printStackTrace(); 


if (HibernateSessionFactory.getSessionFactory() != null) { 
try { HibernateSessionFactory.getSessionFactory().close(); 
} catch (HibernateException e) { 
e.printStackTrace(); 
} } 

public void init(ActionServlet servlet, ModuleConfig config) 
throws ServletException { 
try {  HibernateSessionFactory.rebuildSessionFactory();if(HibernateSessionFactory.getSessionFactory()!=null)
System.out.println("SessionFactory has be successfully builded!");
} catch (HibernateException ex) { 
throw new RuntimeException( 
"Exception building SessionFactory: " + ex.getMessage(), 
ex); 
} try { ctx = new InitialContext(); ctx.bind("HibernateSessionFactory", HibernateSessionFactory.getSessionFactory()); 
} catch (NamingException ex) { 
throw new RuntimeException( 
"Exception binding SessionFactory to JNDI: " + ex.getMessage(), 
ex); 


帮忙详细说说每个函数是做什么用的

解决方案 »

  1.   

    初始化啊,destory()销毁当前的HibernateSessionFactory
    init()重新实例化一个SessionFactory绑定到jndi上以供使用。
      

  2.   

    public void destroy() {//这个方法销毁HibernateSessionFactoryif (ctx != null) { 
    try { 
    ctx.unbind("HibernateSessionFactory"); //从上下文中解除原来的HibernateSessionFactory如果存在的话
    } catch (NamingException e) { 
    e.printStackTrace(); 


    if (HibernateSessionFactory.getSessionFactory() != null) { 
    try { HibernateSessionFactory.getSessionFactory().close(); //关闭原来的HibernateSessionFactory如果存在的话
    } catch (HibernateException e) { 
    e.printStackTrace(); 
    } } 

      

  3.   

    public void init(ActionServlet servlet, ModuleConfig config) //这个方法重新绑定一个HibernateSessionFactory到上下文中
    throws ServletException { 
    try { HibernateSessionFactory.rebuildSessionFactory();//重建if(HibernateSessionFactory.getSessionFactory()!=null)
    System.out.println("SessionFactory has be successfully builded!");
    } catch (HibernateException ex) { 
    throw new RuntimeException( 
    "Exception building SessionFactory: " + ex.getMessage(), 
    ex); 
    } try { ctx = new InitialContext(); ctx.bind("HibernateSessionFactory", HibernateSessionFactory.getSessionFactory()); //绑定前面经过重建的HibernateSessionFactory到上下文中
    } catch (NamingException ex) { 
    throw new RuntimeException( 
    "Exception binding SessionFactory to JNDI: " + ex.getMessage(), 
    ex); 
      

  4.   

    够详细了吧。再看不懂就无能为力了。
    回去再看看java基础吧