hibernate tomcat连接池问题
一个简单的例子,让tomcat来处理数据源,总是搞不通,请大家帮个忙。
tomcat的server.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<!-- Comment these entries out to disable JMX MBeans support used for the
administration web application -->
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<!-- Global JNDI resources -->
<GlobalNamingResources>
<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxSpareThreads="75"
maxThreads="150"
maxHttpHeaderSize="8192">
</Connector>
<Connector
port="8009"
redirectPort="8443"
protocol="AJP/1.3">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host appBase="webapps" name="localhost">
<Context path="/TomcatWithHibernate" docbase="TomcatWithHibernate">
<Resource name="jdbc/TomcatWithHibernate" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/TomcatWithHibernate">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- DBCP database connection settings -->
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1:3306/hibernatetest</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>hibernate</value>
</parameter>
<parameter>
<name>password</name>
<value>hibernate</value>
</parameter>
<!-- DBCP connection pooling options -->
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>100</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
</ResourceParams>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
</Host>
</Engine>
</Service>
</Server>
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="connection.datasource">java:comp/env/jdbc/TomcatWithHibernate</property>
<property name="show_sql">false</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="./bean/Student.hbm.xml"/>
<mapping resource="./bean/Course.hbm.xml"/>
</session-factory>
</hibernate-configuration>
代码:
private void addEmailAddresses2Student(Integer studentId,
String emailAddress)
{
SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();
// 这里就会抛异常了:No TransactionManagerLookup specified
Session session = sessionFactory.getCurrentSession();
Student student = (Student) session.load(Student.class, studentId);
student.getEmailAddresses().add(emailAddress);
session.close();
}
麻烦大家看看是怎么回事,十分感谢!!!!!