cannot open connection

yuzhongfeiniao0167 2010-06-01 03:14:21
MyEclipse+sping+hibernate+struts做了个注册页面,测试时一注册tomcat就提示下面的错误


org.hibernate.exception.GenericJDBCException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)

连接数据库是在tomcat的server.xml中配置的,内容如下:
<Context path="/register" docBase="D:\workspace\TEST\WebRoot"
debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_MysqlTest_log." suffix=".txt"
timestamp="true"/>

<Resource name="jdbc/mytest" auth="Container" type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/mytest">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/mytest</value>
</parameter>
</ResourceParams>
</Context>
application.xml下修改的内容为:

<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/mytest</value>
</property>
</bean>
各位大侠看看错误出在哪里?多谢。
...全文
714 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
qswdcs 2012-02-23
  • 打赏
  • 举报
回复
请问楼主 解决了吗? 是如何解决的啊!!! 我这也是这个问题!!!
hepeng_8 2011-04-26
  • 打赏
  • 举报
回复
这是个很奇怪的问题,很难解决的
yuzhongfeiniao0167 2010-06-03
  • 打赏
  • 举报
回复
问题解决,谢谢大家的帮忙,我对程序做了如下修改,希望对同样有该问题的朋友有所帮助。
1、我用的是connection pool连接数据库,Tomcat是5.5的版本,server.xml文件必须写成如下格式,否则就会出现Cannot create JDBC driver of class '' for connect URL 'null'错误。
<Context path="/test" docBase="D:\workspace\TEST\WebRoot" debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_MysqlTest_log." suffix=".txt" timestamp="true"/>

<Resource

name="jdbc/mytest"

type="javax.sql.DataSource"

password="123"

driverClassName="com.mysql.jdbc.Driver"

maxIdle="2"

maxWait="5000"

username="root"

url="jdbc:mysql://localhost:3306/mytest"

maxActive="4"/>

</Context>
2、Mysql的驱动原来放在WEB-INF\lib下,后来拷到了Tomcat 5.5\common\lib下才不再出现错误:org.hibernate.exception.genericjdbcexception cannot open connection
我环境变量配置也没问题啊,怎么会这样。
sun0322 2010-06-02
  • 打赏
  • 举报
回复
对了,你数据源那块写的是系统自动生成的吗?
我看怎么像是JNDI(java命名接口)
这种方式是在tomcat下的servlet。xml配置一个数据源 名字是jndiName

在哪里的配置中要写上url

你不觉得你这里连个3306的端口号都没有吗?

你在tomcat的 conf下 的那个xml文件中,配置一个数据源试试,
你以前用过jndi吧,就是那么配的
sun0322 2010-06-02
  • 打赏
  • 举报
回复
既然是MyEclipse,你打开配置数据源的那个地方,测试一下看看能不能连接上数据库
sun0322 2010-06-02
  • 打赏
  • 举报
回复
你把web。xml的文件也贴出来看看,是不是哪里有问题
yuzhongfeiniao0167 2010-06-02
  • 打赏
  • 举报
回复
还是未解决 郁闷
yuzhongfeiniao0167 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fairy_dy 的回复:]
<value>com.mysql.jdbc.Driver</value>用这个试一下
[/Quote]

不行 哎 怎么会这样呢

谢谢你
yuzhongfeiniao0167 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jumpheightway 的回复:]
web.xml里面配置没有
[/Quote]

那里面配置什么?
jumpheightway 2010-06-01
  • 打赏
  • 举报
回复
web.xml里面配置没有
Fairy_dy 2010-06-01
  • 打赏
  • 举报
回复
<value>com.mysql.jdbc.Driver</value>用这个试一下
扁鵲東南飛 2010-06-01
  • 打赏
  • 举报
回复
<value>org.gjt.mm.mysql.Driver</value>
myslq 5的dirver 好像不是用这个吧。

你网上查查看看用哪个。
fobcclkm 2010-06-01
  • 打赏
  • 举报
回复
驱动包加了吗? 你可以写个main方法测试一下 具体点的异常信息可以快速找到原因
yuzhongfeiniao0167 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fairy_dy 的回复:]
出现这个错误可能是一下原因:

1:Mysql数据库没有打开(没有启动Mysql 启动的方法:net start mysql)
2:在项目中配置与数据库连接Mysql的时填写的Mysql用户名或密码不正确(使用的是Mysql的用户名密码和Mysql的端口号 一般mysql默认的用户名是:root 密码是你自己安装时候填写的,端口号默认的是3306)
3:项目中没有把mysql驱动架包添加进……
[/Quote]

1:Mysql数据库打开了,我的服务是开机时自动启动的,另外我在cmd中用用户名:root,密码:123是可以进入数据库的。默认端口号我没改过。
2:项目中加入MySQL驱动jar包了,我MySQL是5.1的,jar包是mysql-connector-java-5.1.7-bin.jar

谢谢你指导的这么详细,继续努力找原因。
yuzhongfeiniao0167 2010-06-01
  • 打赏
  • 举报
回复
你用SSH,难道不需要把数据源配置在application。xml的配置文件中吗
用spring管理hibernate
都配置了:application.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/mytest</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>

<prop key="hibernate.connection.autocommit">true</prop>
<prop key="hibernate.show_sql">false</prop>

</props>
</property>
<property name="mappingResources">
<list>
<value>com/TEST/vo/User.hbm.xml</value>
</list>
</property></bean>

<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<bean id="iuserdao" class="com.TEST.dao.IUserDAO" abstract="true"></bean>
<bean id="iuserdaoimpl" class="com.TEST.dao.impl.IUserDAOImpl">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean name="/jsp/register" class="com.TEST.struts.action.registerAction">
<property name="iuserdao">
<ref bean="iuserdaoimpl"/>
</property>
</bean>

谢谢各位热心帮忙,继续努力找原因
yuzhongfeiniao0167 2010-06-01
  • 打赏
  • 举报
回复
回复于:2010-06-01 15:46:38检查hibernate配置文件里的帐号和密码、端口、URl

那些检查了好多遍了 郁闷 User.hbm.xml如下,自动生成的代码 应该也没问题
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.XYG.vo.User" table="user" >
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="userid" type="java.lang.String">
<column name="userid" length="50" not-null="true" />
</property>
<property name="userpwd" type="java.lang.String">
<column name="userpwd" length="50" />
</property>
<property name="userques" type="java.lang.String">
<column name="userques" length="50" />
</property>
<property name="userans" type="java.lang.String">
<column name="userans" length="50" />
</property>
<property name="usermail" type="java.lang.String">
<column name="usermail" length="50" />
</property>
<property name="integral" type="java.lang.Integer">
<column name="integral" />
</property>
<property name="grade" type="java.lang.Integer">
<column name="grade" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" length="2" />
</property>
</class>
</hibernate-mapping>
sun0322 2010-06-01
  • 打赏
  • 举报
回复
你用SSH,难道不需要把数据源配置在application。xml的配置文件中吗
用spring管理hibernate
Fairy_dy 2010-06-01
  • 打赏
  • 举报
回复
出现这个错误可能是一下原因:

1:Mysql数据库没有打开(没有启动Mysql 启动的方法:net start mysql)
2:在项目中配置与数据库连接Mysql的时填写的Mysql用户名或密码不正确(使用的是Mysql的用户名密码和Mysql的端口号 一般mysql默认的用户名是:root 密码是你自己安装时候填写的,端口号默认的是3306)
3:项目中没有把mysql驱动架包添加进去?
4:以上步骤配置都是正确的时候,请你重新加载项目启动容器
yuzhongfeiniao0167 2010-06-01
  • 打赏
  • 举报
回复
╮(╯_╰)╭
Fairy_dy 2010-06-01
  • 打赏
  • 举报
回复
检查hibernate配置文件里的帐号和密码、端口、URl

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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