zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0

          HibernatePlugIn for Struts

          To configure Hibernate in a Jakarta-Struts application:

          1. Create your struts-config.xml file.

          2. Add the following configuration for the plugin:

          <plug-in className="edu.arbor.util.plugin.HibernatePlugIn">

          ? <!-- 'path-to-config-file' is relative to the root of the class

          ?????? path.? It MUST start with a '/'. The default is

          ?????? "/hibernate.cfg.xml" -->

          ? <set-property property="configFilePath" value="path-to-config-file" />

          ? <set-property property="storeInServletContext" value="true-or-false" />

          </plug-in>

          ?

          3. Copy the code into a source file and compile.

          package edu.arbor.util.plugin;

          ?

          import java.net.URL;

          import javax.servlet.ServletContext;

          import javax.servlet.ServletException;

          import net.sf.hibernate.SessionFactory;

          import net.sf.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;

          ?

          /**

          ?* Implements the <code>PlugIn</code> interface to configure the Hibernate

          ?* data persistence library.? A configured

          ?* <code>net.sf.hibernate.SessionFactory</code> is stored in the

          ?* <code>ServletContext</code> of the web application unless the property

          ?* <code>storedInServletContext</code> is set to <code>false</code>.

          ?*

          ?* <plugin class="net.sf.hibernate.plugins.struts.HibernatePlugIn">

          ?*?? <set-property name="configFilePath"

          ?*?????????????? ??value="path-to-config-file"/>

          ?*?? <set-property name="storedInServletContext&quot"

          ?*??????????????? value="true-or-false"/>

          ?* </plugin>

          ?*

          ?* @author? <a href="mailto:bhandy@users.sf.net">Bradley M. Handy</a>

          ?* @version 1.0

          ?*/

          public class HibernatePlugIn implements PlugIn {

          ???

          ??? /**

          ???? * the key under which the <code>SessionFactory</code> instance is stored

          ???? * in the <code>ServletContext</code>.

          ???? */

          ??? public static final String SESSION_FACTORY_KEY

          ??????????? = SessionFactory.class.getName();

          ?

          ??? private static Log _log = LogFactory.getLog(HibernatePlugIn.class);

          ???

          ??? /**

          ???? * indicates whether the <code>SessionFactory</code> instance will be stored

          ???? * in the <code>ServletContext</code>, or not.

          ???? */

          ??? private boolean _storedInServletContext = true;

          ???

          ??? /**

          ???? * the path to the xml configuration file.? the path should start with a

          ???? * '/' character and be relative to the root of the class path.

          ???? * (DEFAULT:? "/hibernate.cfg.xml")

          ???? */

          ??? private String _configFilePath = "/hibernate.cfg.xml";

          ?

          ??? private ActionServlet _servlet = null;

          ??? private ModuleConfig _config = null;

          ??? private SessionFactory _factory = null;

          ?

          ??? /**

          ???? * Destroys the <code>SessionFactory</code> instance.

          ???? */

          ??? public void destroy() {

          ??????? _servlet = null;

          ??????? _config = null;

          ???????

          ??????? try {

          ??????????? _log.debug("Destroying SessionFactory...");

          ???????????

          ??????????? _factory.close();

          ???????????

          ??????????? _log.debug("SessionFactory destroyed...");

          ??????? } catch (Exception e) {

          ??????????? _log.error("Unable to destroy SessionFactory...(exception ignored)",

          ??????????????????? e);

          ??????? }

          ??? }

          ???

          ??? /**

          ???? * Initializes the <code>SessionFactory</code>.

          ???? * @param servlet the <code>ActionServlet</code> instance under which the

          ???? *??????? plugin will run.

          ???? * @param config the <code>ModuleConfig</code> for the module under which

          ???? *??????? the plugin will run.

          ???? */

          ??? public void init(ActionServlet servlet, ModuleConfig config)

          ??? throws ServletException {

          ??????? _servlet = servlet;

          ??????? _config = config;

          ???????

          ??????? initHibernate();

          ??? }

          ???

          ??? /**

          ???? * Initializes Hibernate with the config file found at

          ???? * <code>configFilePath</code>.

          ???? */

          ??? private void initHibernate() throws ServletException {

          ??????? Configuration configuration = null;

          ??????? URL configFileURL = null;

          ??????? ServletContext context = null;

          ???????

          ??????? try {

          ??????????? configFileURL = HibernatePlugIn.class.getResource(_configFilePath);

          ?

          ??????????? context = _servlet.getServletContext();

          ?

          ??????????? if (_log.isDebugEnabled()) {

          ??????????????? _log.debug("Initializing Hibernate from "

          ??????????????????????? + _configFilePath + "...");

          ??????????? }

          ???????????

          ??????????? configuration = (new Configuration()).configure(configFileURL);

          ??????????? _factory = configuration.buildSessionFactory();

          ???????????

          ??????????? if (_storedInServletContext) {

          ??????????????? _log.debug("Storing SessionFactory in ServletContext...");

          ??? ????????????

          ??????????????? context.setAttribute(SESSION_FACTORY_KEY, _factory);

          ??????????? }

          ??????????

          ??????? } catch (Throwable t) {

          ??????????? _log.error("Exception while initializing Hibernate.");

          ??????????? _log.error("Rethrowing exception...", t);

          ???????????

          ??????????? throw (new ServletException(t));

          ??????? }

          ??? }

          ???

          ??? /**

          ???? * Setter for property configFilePath.

          ???? * @param configFilePath New value of property configFilePath.

          ???? */

          ??? public void setConfigFilePath(String configFilePath) {

          ??????? if ((configFilePath == null) || (configFilePath.trim().length() == 0)) {

          ??????????? throw new IllegalArgumentException(

          ??????????????????? "configFilePath cannot be blank or null.");

          ??????? }

          ???????

          ??????? if (_log.isDebugEnabled()) {

          ??????????? _log.debug("Setting 'configFilePath' to '"

          ??????????????????? + configFilePath + "'...");

          ??????? }

          ???????

          ??????? _configFilePath = configFilePath;

          ??? }

          ???

          ??? /**

          ???? * Setter for property storedInServletContext.

          ???? * @param storedInServletContext New value of property storedInServletContext.

          ???? */

          ??? public void setStoredInServletContext(String storedInServletContext) {

          ??????? if ((storedInServletContext == null)

          ??????????????? || (storedInServletContext.trim().length() == 0)) {

          ??????????? storedInServletContext = "false";

          ??????? }

          ???????

          ??????? if (_log.isDebugEnabled()) {

          ??????????? _log.debug("Setting 'storedInServletContext' to '"

          ??????????????????? + storedInServletContext + "'...");

          ??????? }

          ???????

          ??????? _storedInServletContext

          ??????????????? = new Boolean(storedInServletContext).booleanValue();

          ??? }

          ???

          }

          ?

          ?

          A Usage example would be excellent!

          08 Sep 2003, 16:07

          themax

          A usage example would be excellent!

          ?

          Some more meat in the bones. Configruing hibernate with struts

          26 Nov 2003, 14:12

          mark.lowe

          <?xml version='1.0' encoding='utf-8'?>

          <!DOCTYPE hibernate-configuration PUBLIC

          ??????? "-//Hibernate/Hibernate Configuration DTD 2.0//EN"

          ????????????? "http://hibernate.sourceforge.net/hibernate-configuration

          -2.0.dtd">

          ?

          <hibernate-configuration>

          ?

          ??? <!-- a SessionFactory instance listed as /jndi/name -->

          ?? <session-factory name="foo:/hibernate/SessionFactory">

          ??????? <!-- properties -->

          ??????? <property

          name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>

          ??????? <property name="connection.username">brian</property>

          ??????? <property name="connection.password">arses</property>

          ??????? <property name="connection.url">jdbc:mysql://localhost:3306/

          mydata</property>

          ??????? <property

          name="connection.driver_class">com.mysql.jdbc.Driver</property>

          ??????? <property name="show_sql">true</property>

          ??????? <property name="use_outer_join">true</property>

          ??????? <property

          name="transaction.factory_class">net.sf.hibernate.transaction.JDBCTra

          nsactionFactory</property>

          ??????? <property name="dbcp.minIdle">1</property>

          ??????? <property name="cache.use_query_cache">true</property>

          ?????????????

          ??????? <!-- mapping files -->

          ??????? <mapping resource="com/sparrow/om/Arse.hbm.xml"/>

          ?

          ??? </session-factory>

          ?

          </hibernate-configuration>

          ?

          ?

          and in struts config..

          ?

          ?????? <plug-in className="edu.arbor.util.plugin.HibernatePlugIn">

          ????????????? <set-property property="storedInServletContext" value="true"/>

          ?????? </plug-in>

          ?

          ..

          in struts action

          ..

          Context ctx = new InitialContext();

          SessionFactory sf = (SessionFactory) ctx.lookup("foo:/hibernate/

          SessionFactory");

          hibSession = sf.openSession();

          ?

          Query query = hibSession.createQuery("from com.sparrow.om.Arse");

          Iterator it = query.iterate();

          ????????????????????

          while(it.hasNext()) {

          ????????????? Arse arse = (Arse) it.next();

          ????????????? arseList.add(arse);

          }

          ????????????????????

          request.setAttribute("arses", arseList.toArray());

          ?

          ..

          ?

          Tomcat notes

          23 Aug 2004, 18:03

          chrismaeda

          The previous example (where the SessionFactory is bound in the JNDI

          tree) doesn't work for Tomcat since Tomcat's JNDI is read-only.

          ?

          If you store the SessionFactory in the servlet context, you get it

          back with the following code:

          ?

          ?? (SessionFactory) servletContext.getAttribute

          (HibernatePlugIn.SESSION_FACTORY_KEY);

          ?

          If you are using JSP 1.2 or 2.0, you could also use this EL expression:

          ?

          ?? "${applicationScope['net.sf.hibernate.SessionFactory']}"

          ?

          This works for generic servlets as well.? Just execute the plugin code

          in the servlet's init() method.

          ?



          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2006-04-20 14:57 zhyiwww 閱讀(282) 評論(0)  編輯  收藏 所屬分類: j2ee
          主站蜘蛛池模板: 济源市| 巴南区| 玉树县| 天等县| 广安市| 平罗县| 潜江市| 响水县| 博客| 永春县| 新源县| 特克斯县| 淄博市| 龙门县| 景泰县| 克什克腾旗| 民勤县| 西和县| 琼中| 宜兰市| 阿勒泰市| 华宁县| 丽江市| 十堰市| 江西省| 诸暨市| 辽阳县| 和平区| 定结县| 正安县| 南雄市| 龙口市| 楚雄市| 大同县| 曲麻莱县| 顺平县| 文昌市| 西城区| 普宁市| 泸定县| 航空|