报错:
exception java.lang.UnsupportedOperationException
org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:116)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:554)
org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:66)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:129)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1290)
TestHibernate.Save(TestHibernate.java:51)
RegeditServlet.doPost(RegeditServlet.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.我的配置文件:server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
name="jdbc/ye"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
poolPreparedStatements="true"
efaultTransactionIsolation="1"
defaultAutoCommit="false"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="ye"
maxWait="5000"
driverClassName="oracle.jdbc.driver.OracleDriver"
password="ye"
url="jdbc:oracle:thin:@ye:1521:doorloca"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8081"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxSpareThreads="75"
maxThreads="150">
</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>
<Resource
name="jdbc/ye"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
poolPreparedStatements="true"
efaultTransactionIsolation="1"
defaultAutoCommit="false"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="ye"
maxWait="5000"
driverClassName="oracle.jdbc.driver.OracleDriver"
password="ye"
url="jdbc:oracle:thin:@ye:1521:doorloca"/>
</context>
</Host>
</Engine>
</Service>
</Server>
context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" crossContext="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Resource name="jdbc/ye" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:doorloca"
username="ye"
password="ye"
maxActive="20"
maxIdle="10"
maxWait="-1"/>
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt" timestamp="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="localhost_access_log." suffix=".txt" pattern="common" />
</Context>
exception java.lang.UnsupportedOperationException
org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:116)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:554)
org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:66)
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:129)
org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1290)
TestHibernate.Save(TestHibernate.java:51)
RegeditServlet.doPost(RegeditServlet.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.我的配置文件:server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
name="jdbc/ye"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
poolPreparedStatements="true"
efaultTransactionIsolation="1"
defaultAutoCommit="false"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="ye"
maxWait="5000"
driverClassName="oracle.jdbc.driver.OracleDriver"
password="ye"
url="jdbc:oracle:thin:@ye:1521:doorloca"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8081"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxSpareThreads="75"
maxThreads="150">
</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>
<Resource
name="jdbc/ye"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
poolPreparedStatements="true"
efaultTransactionIsolation="1"
defaultAutoCommit="false"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="ye"
maxWait="5000"
driverClassName="oracle.jdbc.driver.OracleDriver"
password="ye"
url="jdbc:oracle:thin:@ye:1521:doorloca"/>
</context>
</Host>
</Engine>
</Service>
</Server>
context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context reloadable="true" crossContext="true">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Resource name="jdbc/ye" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:doorloca"
username="ye"
password="ye"
maxActive="20"
maxIdle="10"
maxWait="-1"/>
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt" timestamp="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="localhost_access_log." suffix=".txt" pattern="common" />
</Context>
session.beginTransaction();事务没开启
是因为hibernate3不支持dbcp的,而你肯定用了数据源,但没配连接池的,
所以tomcat就会用默认的dbcp连接池来连接的,而hibernate3不支持dbcp的
所以就出错了,可以自己换c3p0的连接池