hibernate tomcat连接池问题

hannibalhontani 2005-09-05 05:44:57
一个简单的例子,让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();
}

麻烦大家看看是怎么回事,十分感谢!!!!!
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hannibalhontani 2005-09-06
  • 打赏
  • 举报
回复
我错了。忘记打开session了!!!!!!!
还有,对于Tomcat5.5版本好像和文档上说的处理方法不一样,可以参考
http://www.hibernate.org/114.html上面,作者给出了解决方法。
hannibalhontani 2005-09-05
  • 打赏
  • 举报
回复
jixuding
bob_thb 2005-09-05
  • 打赏
  • 举报
回复
学习ing......
hannibalhontani 2005-09-05
  • 打赏
  • 举报
回复
ding
hannibalhontani 2005-09-05
  • 打赏
  • 举报
回复
上面的代码部分应该是:
private void addEmailAddresses2Student(Integer studentId,
String emailAddress)
{
SessionFactory sessionFactory =
new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();

Transaction tx = session.beginTransaction();

Student student = (Student) session.load(Student.class, studentId);
student.getEmailAddresses().add(emailAddress);

tx.commit();

session.close();
}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧