免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1219 | 回复: 0
打印 上一主题 下一主题

急问Jsp与Tomcat相关的web应用换数据库遇到的问题~~~~~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-17 12:39 |只看该作者 |倒序浏览
本人初学者,应工作需要将原来的一个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的语句中已经有了这个,
请问是什么其它原因导致这个错误呢?

请高手指点一下,谢谢!!!!!!

如果需要其他信息我也可以贴上来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP