- 论坛徽章:
- 0
|
本人初学者,应工作需要将原来的一个web应用的数据库由MySQL
换为SqlServer2000,
环境如下:
操作系统: windows advanced server 2000
服务器软件:jakarta-tomcat-5.0.12.exe
原数据库: mysql-4.1.10-win32
该web应用应该是用hibernate作的映射架构。
开发语言:jsp
将数据库换为SqlServer2000后,查找网上资料修改了两处配置文件:
************************************************************
一处为Tomcat的server.xml文件
在语句</Host>前,原内容为
<Context path="/Register" reloadable="true" docBase="Register" >
Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/qyzx"
connectionName="root" connectionPassword="root"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
</Context>
修改后内容为
<Context path="/Register" reloadable="true" docBase="Register" >
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
connectionURL="jdbc:microsoft:sqlserver://localhost:1433" DatabaseName="qyzx"
connectionName="bankqyzx" connectionPassword="bankqyzx"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
</Context>
**************************************************************
另一处为
Tomcat下webapps目录中web应用目录中WEB-INF\classes目录中的hibernate.properties文件,
将原来用Mysql的语句注释掉,将原来被注释掉的Mssqlser2000语句去掉注释,
修改后的hibernate.properties文件如下:
## MS SQL Server
hibernate.dialect=net.sf.hibernate.dialect.SQLServerDialect
hibernate.connection.username=bankqyzx
hibernate.connection.password=bankqyzx
hibernate.connection.driver_class=com.microsoft.jdbc.sqlserver.SQLServerDriver
hibernate.connection.url=jdbc:microsoft:sqlserver://localhost:1433;charset=CP936;DatabaseName=qyzx;SelectMethod=cursor
## MySQL
#hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
##hibernate.connection.driver_class=org.gjt.mm.mysql.Driver
#hibernate.connection.driver_class=com.mysql.jdbc.Driver
#hibernate.connection.url=jdbc:mysql://localhost:3306/qyzx?useUnicode=true&characterEncoding=gbk
#hibernate.connection.username=root
#hibernate.connection.password=root
#################################
### Hibernate Connection Pool ###
#################################
#hibernate.connection.pool_size=1
###########################
### C3P0 Connection Pool###
###########################
hibernate.c3p0.max_size=50
hibernate.c3p0.min_size=10
hibernate.c3p0.timeout=5000
hibernate.c3p0.max_statements=1000
hibernate.c3p0.idle_test_period=3000
hibernate.c3p0.acquire_increment=5
hibernate.c3p0.validate=false
###################################
### Apache DBCP Connection Pool ###
###################################
## connection pool
#hibernate.dbcp.maxActive= 100
#hibernate.dbcp.whenExhaustedAction=1
#hibernate.dbcp.maxWait= 120000
#hibernate.dbcp.maxIdle= 10
## prepared statement cache
#hibernate.dbcp.ps.maxActive 100
#hibernate.dbcp.ps.whenExhaustedAction 10
#hibernate.dbcp.ps.maxWait 120000
#hibernate.dbcp.ps.maxIdle 10
## optional query to validate pooled connections:
#hibernate.dbcp.validationQuery select 1 from dual
#hibernate.dbcp.testOnBorrow=true
#hibernate.dbcp.testOnReturn=false
#######################
### Transaction API ###
#######################
hibernate.transaction.factory_class=net.sf.hibernate.transaction.JDBCTransactionFactory
**********************************************************************
运行后出了错误,在开始界面中输入用户密码返回出错,
怀疑是连接数据库出了问题,查找\Tomcat 5.0\logs目录下的log文件,
发现如下:
2006-08-17 09:50:23 createObjectName with StandardEngine[Catalina].StandardHost[localhost]
2006-08-17 09:50:23 preRegister with Catalina:type=Logger,host=localhost
2006-08-17 09:50:30 ContextListener: contextInitialized()
2006-08-17 09:50:30 SessionListener: contextInitialized()
2006-08-17 09:50:30 ContextListener: contextInitialized()
2006-08-17 09:50:30 SessionListener: contextInitialized()
2006-08-17 09:51:24 JDBCRealm[/Register]: Username 0301 successfully authenticated
2006-08-17 09:51:24 JDBCRealm[/Register]: Exception performing authentication
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.setupImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.<init>(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
at org.apache.catalina.realm.JDBCRealm.roles(JDBCRealm.java:680)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:485)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:393)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:261)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:563)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:563)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:209)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:670)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:517)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:575)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)
2006-08-17 09:51:24 JDBCRealm[/Register]: Username 0301 successfully authenticated
2006-08-17 09:51:24 JDBCRealm[/Register]: Exception performing authentication
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.setupImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.<init>(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source)
at org.apache.catalina.realm.JDBCRealm.roles(JDBCRealm.java:680)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:485)
at org.apache.catalina.realm.JDBCRealm.authenticate(JDBCRealm.java:393)
at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:261)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:563)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:563)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:209)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:670)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:517)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:575)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)
*********************************************************************************
我是初学者,没有什么经验,
在log中Username 0301 successfully authenticated这句似乎已经进入了数据库并验证了
web应用中的用户和密码,
但看到这句错误描述:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]
Can't start a cloned connection while in manual transaction mode.
就去上网查,但查出来的文章都说解决的方法是
在配置文件中加上SelectMethod=cursor这句,
但是我看hibernate.properties中sqlserver2000的语句中已经有了这个,
请问是什么其它原因导致这个错误呢?
请高手指点一下,谢谢!!!!!!
如果需要其他信息我也可以贴上来。 |
|