且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

[Struts]HibernatePlugIn for Struts(转贴)

更新时间:2022-08-17 21:30:24

这个Plugin的作用是在Struts应用程序启动时进行hibernate的初始化操作,原文HibernatePlugIn for Struts,步骤很简单:

1、在struts-config.xml里增加:

[Struts]HibernatePlugIn for Struts(转贴)<plug-in className="org.haree.struts.HibernatePlugIn"> 
[Struts]HibernatePlugIn for Struts(转贴)  
<!-- 'path-to-config-file' is relative to the root of the class 
[Struts]HibernatePlugIn for Struts(转贴)       path.  It MUST start with a '/'. The default is 
[Struts]HibernatePlugIn for Struts(转贴)       "/hibernate.cfg.xml 
--> 
[Struts]HibernatePlugIn for Struts(转贴)  
<set-property property="configFilePath" value="path-to-config-file" /> 
[Struts]HibernatePlugIn for Struts(转贴)  
<set-property property="storeInServletContext" value="true-or-false" /> 
[Struts]HibernatePlugIn for Struts(转贴)
</plug-in> 
[Struts]HibernatePlugIn for Struts(转贴)

2、HibernatePlugIn.java的内容

[Struts]HibernatePlugIn for Struts(转贴)package org.haree.struts; 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)import java.net.URL; 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)import javax.servlet.ServletContext; 
[Struts]HibernatePlugIn for Struts(转贴)import javax.servlet.ServletException; 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)import net.sf.hibernate.SessionFactory; 
[Struts]HibernatePlugIn for Struts(转贴)import net.sf.hibernate.cfg.Configuration; 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)import org.apache.commons.logging.Log; 
[Struts]HibernatePlugIn for Struts(转贴)import org.apache.commons.logging.LogFactory; 
[Struts]HibernatePlugIn for Struts(转贴)import org.apache.struts.action.ActionServlet; 
[Struts]HibernatePlugIn for Struts(转贴)import org.apache.struts.action.PlugIn; 
[Struts]HibernatePlugIn for Struts(转贴)import org.apache.struts.config.ModuleConfig; 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)
/*
[Struts]HibernatePlugIn for Struts(转贴) * Implements the <code>PlugIn</code> interface to configure the Hibernate 
[Struts]HibernatePlugIn for Struts(转贴) * data persistence library.  A configured 
[Struts]HibernatePlugIn for Struts(转贴) * <code>net.sf.hibernate.SessionFactory</code> is stored in the 
[Struts]HibernatePlugIn for Struts(转贴) * <code>ServletContext</code> of the web application unless the property 
[Struts]HibernatePlugIn for Struts(转贴) * <code>storedInServletContext</code> is set to <code>false</code>. 
[Struts]HibernatePlugIn for Struts(转贴) * 
[Struts]HibernatePlugIn for Struts(转贴) * <p> 
[Struts]HibernatePlugIn for Struts(转贴) * &lt;plugin class=&quot;net.sf.hibernate.plugins.struts.HibernatePlugIn&quot;&gt; 
[Struts]HibernatePlugIn for Struts(转贴) *   &lt;set-property name=&quot;configFilePath&quot" 
[Struts]HibernatePlugIn for Struts(转贴) *                value=&quot;path-to-config-file&quot;/&gt; 
[Struts]HibernatePlugIn for Struts(转贴) *   &lt;set-property name=&quot;storedInServletContext&quot" 
[Struts]HibernatePlugIn for Struts(转贴) *                value=&quot;true-or-false&quot;/&gt; 
[Struts]HibernatePlugIn for Struts(转贴) * &lt;/plugin&gt; 
[Struts]HibernatePlugIn for Struts(转贴) * 
[Struts]HibernatePlugIn for Struts(转贴) * @author  <a href="mailto:bhandy@users.sf.net">Bradley M. Handy</a> 
[Struts]HibernatePlugIn for Struts(转贴) * @version 1.0 
[Struts]HibernatePlugIn for Struts(转贴) 
*/ 
[Struts]HibernatePlugIn for Struts(转贴)public class HibernatePlugIn implements PlugIn { 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * the key under which the <code>SessionFactory</code> instance is stored 
[Struts]HibernatePlugIn for Struts(转贴)     * in the <code>ServletContext</code>. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    public static final String SESSION_FACTORY_KEY 
[Struts]HibernatePlugIn for Struts(转贴)            
= SessionFactory.class.getName(); 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)    private static Log _log 
= LogFactory.getLog(HibernatePlugIn.class); 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * indicates whether the <code>SessionFactory</code> instance will be stored 
[Struts]HibernatePlugIn for Struts(转贴)     * in the <code>ServletContext</code>, or not. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    private 
boolean _storedInServletContext = true
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * the path to the xml configuration file.  the path should start with a 
[Struts]HibernatePlugIn for Struts(转贴)     * '/' character and be relative to the root of the class path. 
[Struts]HibernatePlugIn for Struts(转贴)     * (DEFAULT:  "/hibernate.cfg.xml") 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    private String _configFilePath 
= "/hibernate.cfg.xml"
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)    private ActionServlet _servlet 
= null
[Struts]HibernatePlugIn for Struts(转贴)    private ModuleConfig _config 
= null
[Struts]HibernatePlugIn for Struts(转贴)    private SessionFactory _factory 
= null
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * Destroys the <code>SessionFactory</code> instance. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    public 
void destroy() { 
[Struts]HibernatePlugIn for Struts(转贴)        _servlet 
= null
[Struts]HibernatePlugIn for Struts(转贴)        _config 
= null
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        
try { 
[Struts]HibernatePlugIn for Struts(转贴)            _log.debug(
"Destroying SessionFactory[Struts]HibernatePlugIn for Struts(转贴)"); 
[Struts]HibernatePlugIn for Struts(转贴)            
[Struts]HibernatePlugIn for Struts(转贴)            _factory.close(); 
[Struts]HibernatePlugIn for Struts(转贴)            
[Struts]HibernatePlugIn for Struts(转贴)            _log.debug(
"SessionFactory destroyed[Struts]HibernatePlugIn for Struts(转贴)"); 
[Struts]HibernatePlugIn for Struts(转贴)        } 
catch (Exception e) { 
[Struts]HibernatePlugIn for Struts(转贴)            _log.error(
"Unable to destroy SessionFactory[Struts]HibernatePlugIn for Struts(转贴)(exception ignored)"
[Struts]HibernatePlugIn for Struts(转贴)                    e); 
[Struts]HibernatePlugIn for Struts(转贴)        } 
[Struts]HibernatePlugIn for Struts(转贴)    } 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * Initializes the <code>SessionFactory</code>. 
[Struts]HibernatePlugIn for Struts(转贴)     * @param servlet the <code>ActionServlet</code> instance under which the 
[Struts]HibernatePlugIn for Struts(转贴)     *        plugin will run. 
[Struts]HibernatePlugIn for Struts(转贴)     * @param config the <code>ModuleConfig</code> for the module under which 
[Struts]HibernatePlugIn for Struts(转贴)     *        the plugin will run. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    public 
void init(ActionServlet servlet, ModuleConfig config) 
[Struts]HibernatePlugIn for Struts(转贴)    throws ServletException { 
[Struts]HibernatePlugIn for Struts(转贴)        _servlet 
= servlet; 
[Struts]HibernatePlugIn for Struts(转贴)        _config 
= config; 
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        initHibernate(); 
[Struts]HibernatePlugIn for Struts(转贴)    } 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * Initializes Hibernate with the config file found at 
[Struts]HibernatePlugIn for Struts(转贴)     * <code>configFilePath</code>. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    private 
void initHibernate() throws ServletException { 
[Struts]HibernatePlugIn for Struts(转贴)        Configuration configuration 
= null
[Struts]HibernatePlugIn for Struts(转贴)        URL configFileURL 
= null
[Struts]HibernatePlugIn for Struts(转贴)        ServletContext context 
= null
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        
try { 
[Struts]HibernatePlugIn for Struts(转贴)            configFileURL 
= HibernatePlugIn.class.getResource(_configFilePath); 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)            context 
= _servlet.getServletContext(); 
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)            
if (_log.isDebugEnabled()) { 
[Struts]HibernatePlugIn for Struts(转贴)                _log.debug(
"Initializing Hibernate from " 
[Struts]HibernatePlugIn for Struts(转贴)                        
+ _configFilePath + "[Struts]HibernatePlugIn for Struts(转贴)"); 
[Struts]HibernatePlugIn for Struts(转贴)            } 
[Struts]HibernatePlugIn for Struts(转贴)            
[Struts]HibernatePlugIn for Struts(转贴)            configuration 
= (new Configuration()).configure(configFileURL); 
[Struts]HibernatePlugIn for Struts(转贴)            _factory 
= configuration.buildSessionFactory(); 
[Struts]HibernatePlugIn for Struts(转贴)            
[Struts]HibernatePlugIn for Struts(转贴)            
if (_storedInServletContext) { 
[Struts]HibernatePlugIn for Struts(转贴)                _log.debug(
"Storing SessionFactory in ServletContext[Struts]HibernatePlugIn for Struts(转贴)"); 
[Struts]HibernatePlugIn for Struts(转贴)                
[Struts]HibernatePlugIn for Struts(转贴)                context.setAttribute(SESSION_FACTORY_KEY, _factory); 
[Struts]HibernatePlugIn for Struts(转贴)            } 
[Struts]HibernatePlugIn for Struts(转贴)            
[Struts]HibernatePlugIn for Struts(转贴)        } 
catch (Throwable t) { 
[Struts]HibernatePlugIn for Struts(转贴)            _log.error(
"Exception while initializing Hibernate."); 
[Struts]HibernatePlugIn for Struts(转贴)            _log.error(
"Rethrowing exception[Struts]HibernatePlugIn for Struts(转贴)", t); 
[Struts]HibernatePlugIn for Struts(转贴)            
[Struts]HibernatePlugIn for Struts(转贴)            
throw (new ServletException(t)); 
[Struts]HibernatePlugIn for Struts(转贴)        } 
[Struts]HibernatePlugIn for Struts(转贴)    } 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * Setter for property configFilePath. 
[Struts]HibernatePlugIn for Struts(转贴)     * @param configFilePath New value of property configFilePath. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    public 
void setConfigFilePath(String configFilePath) { 
[Struts]HibernatePlugIn for Struts(转贴)        
if ((configFilePath == null|| (configFilePath.trim().length() == 0)) { 
[Struts]HibernatePlugIn for Struts(转贴)            
throw new IllegalArgumentException( 
[Struts]HibernatePlugIn for Struts(转贴)                    
"configFilePath cannot be blank or null."); 
[Struts]HibernatePlugIn for Struts(转贴)        } 
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        
if (_log.isDebugEnabled()) { 
[Struts]HibernatePlugIn for Struts(转贴)            _log.debug(
"Setting 'configFilePath' to '" 
[Struts]HibernatePlugIn for Struts(转贴)                    
+ configFilePath + "'[Struts]HibernatePlugIn for Struts(转贴)"); 
[Struts]HibernatePlugIn for Struts(转贴)        } 
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        _configFilePath 
= configFilePath; 
[Struts]HibernatePlugIn for Struts(转贴)    } 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)    
/*
[Struts]HibernatePlugIn for Struts(转贴)     * Setter for property storedInServletContext. 
[Struts]HibernatePlugIn for Struts(转贴)     * @param storedInServletContext New value of property storedInServletContext. 
[Struts]HibernatePlugIn for Struts(转贴)     
*/ 
[Struts]HibernatePlugIn for Struts(转贴)    public 
void setStoredInServletContext(String storedInServletContext) { 
[Struts]HibernatePlugIn for Struts(转贴)        
if ((storedInServletContext == null
[Struts]HibernatePlugIn for Struts(转贴)                
|| (storedInServletContext.trim().length() == 0)) { 
[Struts]HibernatePlugIn for Struts(转贴)            storedInServletContext 
= "false"
[Struts]HibernatePlugIn for Struts(转贴)        } 
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        
if (_log.isDebugEnabled()) { 
[Struts]HibernatePlugIn for Struts(转贴)            _log.debug(
"Setting 'storedInServletContext' to '" 
[Struts]HibernatePlugIn for Struts(转贴)                    
+ storedInServletContext + "'[Struts]HibernatePlugIn for Struts(转贴)"); 
[Struts]HibernatePlugIn for Struts(转贴)        } 
[Struts]HibernatePlugIn for Struts(转贴)        
[Struts]HibernatePlugIn for Struts(转贴)        _storedInServletContext 
[Struts]HibernatePlugIn for Struts(转贴)                
= new Boolean(storedInServletContext).booleanValue(); 
[Struts]HibernatePlugIn for Struts(转贴)    } 
[Struts]HibernatePlugIn for Struts(转贴)    
[Struts]HibernatePlugIn for Struts(转贴)
[Struts]HibernatePlugIn for Struts(转贴)


本文转自博客园八进制的博客,原文链接:[Struts]HibernatePlugIn for Struts(转贴),如需转载请自行联系原博主。