struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Friedman" <hum...@ix.netcom.com>
Subject RE: Plea for help w/Struts-Hibernate Plugin that has it working!
Date Wed, 17 Dec 2003 01:34:18 GMT
David,

There is an alternative Struts/Hibernate/JNDI combination.  All of it hinges
on one file: hibernate.cfg.xml.  It doesn't require any changes to
server.xml or web.xml and works (at the very least) for me on Struts v1.0 &
v1.1 with Hibernate v2.0.3 & V2.1beta6 under Tomcat 4.1.24 through 4.1.29.

***** Use a hibernate.cfg.xml file like so (passwords changed and pardon my
MySQL slant)

<?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>
        <session-factory name="dgf:/hibernate/SessionFactory">
        <property
name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
        <property name="connection.username">AAAAAAAAAA</property>
        <property name="connection.password">BBBBBBBBBB</property>
        <property
name="connection.url">jdbc:mysql://localhost:3306/authors</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.JDBCTransactio
nFactory</property>
        <property name="dbcp.minIdle">1</property>
	<!-- Optional, I use this but it requires an opensymphony.org download of
OSCache
        <property name="cache.use_query_cache">true</property>
        <property
name="cache.provider_class">net.sf.hibernate.cache.OSCacheProvider</property
>
	-->

        <!-- insert any mapping file so you don't need to hardcode adding
classes or adding files in a Java class -->
        <mapping resource="hibernate/Misc.hbm.xml"/>
        </session-factory>
</hibernate-configuration>

The JNDI location is set in the session-factory tag using the 'name=""'
attribute.   Whatever name you choose, DO NOT use anything starting
"java:comp/env" as that is read-only in Tomcat and will NOT work.  I made up
a context named "dgf:/hibernate/SessionFactory" and was pleasantly surprised
when hibernate created the context for me and stored the SessionFactory
within it so I could us it in JNDI context lookups after I got the
InitialContext and performed a
' SessionFactory sf = (SessionFactory)
context.lookup("dgf:/hibernate/SessionFactory");'.

I see you want to use DBCP.  As long as you set a minimum of 1 dbcp
property, hibernate will detect you want to use DBCP as your connection
pool.  Feel free to set more than one DBCP property or even to use something
other than "dbcp.minIdle" as in my working example above.

Hibernate can work with other connection pools.  I recommend avoiding C3P0
as it can't shutdown (eats up memory unless you fully shutdown the JVM [i.e.
TOMCAT] and restart).  A Beta C3P0 allows shutdown of a C3P0 pool, but the
last time I checked, the Hibernate controlling class for C3P0 pooling still
had an empty finalize() and never actually shutdown my C3P0 pool.

Regards,
David

-----Original Message-----
From: David Erickson [mailto:derickson@cmcflex.com]
Sent: Tuesday, December 16, 2003 7:20 PM
To: Struts Mailing List
Subject: Plea for help w/Struts-Hibernate Plugin that has it working!


For some reason I just cannot make the Struts-Hibernate plugin work.. I
can't make the Struts-Hibernate Listener work either.  Here is the link to
class I am trying to use:

http://www.hibernate.org/133.html

Here is the error I get without fail every time.. now note that this jndi
connection WORKS fine when I use the HibernateUtil class, or when I use my
own JDNI tests.

Error:
2003-12-16 17:10:31,452 [DEBUG] impl.SessionImpl - opened session
2003-12-16 17:10:31,468 [DEBUG] transaction.JDBCTransaction - begin
2003-12-16 17:10:31,484 [DEBUG] util.JDBCExceptionReporter - SQL Exception
java.sql.SQLException: Cannot load JDBC driver class 'null'
 at
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.jav
a:529)
 at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:3
12)
 at
net.sf.hibernate.connection.DatasourceConnectionProvider.getConnection(Datas
ourceConnectionProvider.java:59)
 at net.sf.hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:262)
 at net.sf.hibernate.impl.SessionImpl.connect(SessionImpl.java:3155)
 at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:3138)
 at
net.sf.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:40)

My setup:
tomcat_home\common\lib contains:
commons-dbcp.jar
commons-pool.jar
jdbc2_0-stdext.jar
jndi.jar
mysql-connector-java-3.0.8-stable-bin.jar
hibernate2.jar
etc

Server.xml:
    <DefaultContext >
     <Resource name="jdbc/Salesweb" auth="Container"
type="javax.sql.DataSource"/>
     <ResourceParams name="jdbc/Salesweb">
      <parameter>
       <name>factory</name>
       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
       <name>maxActive</name>
       <value>100</value>
      </parameter>
      <parameter>
       <name>maxIdle</name>
       <value>30</value>
      </parameter>
      <parameter>
       <name>maxWait</name>
       <value>10000</value>
      </parameter>
      <parameter>
       <name>username</name>
       <value>myuser</value>
      </parameter>
      <parameter>
       <name>password</name>
       <value>mypass</value>
      </parameter>
      <parameter>
       <name>driverClassName</name>
       <value>org.gjt.mm.mysql.Driver</value>
      </parameter>
      <parameter>
       <name>url</name>

<value>jdbc:mysql://192.168.0.104:3306/salesweb?autoReconnect=true</value>
      </parameter>
     </ResourceParams>
    </DefaultContext>

web.xml:
 <resource-ref>
  <description>Salesweb Database Connection</description>
  <res-ref-name>jdbc/Salesweb</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>

hibernate.cfg.xml:
<hibernate-configuration>
    <session-factory>
        <property
name="connection.datasource">java:comp/env/jdbc/Salesweb</property>
        <property name="show_sql">true</property>
        <property
name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
  <!-- Mapping files -->
        <mapping resource="Prospect.hbm.xml"/>

    </session-factory>
</hibernate-configuration>

Thanks for any help in advance!!!
-David


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-user-help@jakarta.apache.org


Mime
View raw message