Error creating bean with name 'DataSource' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
问题原因:
查看你的applicationContext.xml配置文件中,DataSource这个bean的配置,里面应该有个
jndi-name="java:comp/env/xxxx"类似的信息。 你这个jdni数据源没有在tomcat中配置 。
解决办法:
需要你在tomcat6安装目录下的conf文件夹下,找一个context.xml的配置文件,在里面添加jndi数据源。
大概是这样:
<Resource name="jdbc/demo" driverClassName="com.mysql.jdbc.Driver" username="root" password="sasasa" url="jdbc:mysql://localhost:3306/demo" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" validationQuery="select 1" validationQueryTimeout="1" auth="Container"/>
那applicationContext.xml中应该这样配置:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/demo" />
注意:DataSource首字母要小写。
追问
查看你的applicationContext.xml配置文件中,DataSource这个bean的配置,里面应该有个
jndi-name="java:comp/env/xxxx"类似的信息。 你这个jdni数据源没有在tomcat中配置 。
解决办法:
需要你在tomcat6安装目录下的conf文件夹下,找一个context.xml的配置文件,在里面添加jndi数据源。
大概是这样:
<Resource name="jdbc/demo" driverClassName="com.mysql.jdbc.Driver" username="root" password="sasasa" url="jdbc:mysql://localhost:3306/demo" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" validationQuery="select 1" validationQueryTimeout="1" auth="Container"/>
那applicationContext.xml中应该这样配置:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/demo" />
注意:DataSource首字母要小写。
追问
我写的是接口类,和数据源的关系不大,只要可以操作数据库就可以了
但是还是报错
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-09-17
确定是 tomcat 报错 ,我怎么觉得是你的spring配错了追问
我这个写的是接口类,只需要编译一下就OK了,但是编译时都在报这个错
第2个回答 2013-09-17
学的不深,不过可以试下将注释去掉。。。看能不能行。。。
第3个回答 2013-09-17
少了数据源追问
不应该啊,数据源配置了啊,我主要是写接口的
你的报错记录是说:无法创建datasource
追问我尝试了一下在tomcat根目录下bin中启动,成功了,还可以访问我写的接口,但就是在myEclipse里面不可以,头疼。。。。。。。。。。
第4个回答 2013-09-17
这个跟tomcat6 没有关系,是你有一个已经发布的工程里面的一个配置文件有错误。 配置文件:某一项目的WEB-INF/classes/applicationContext.xml, DataSource里面的配置项jdbc 配置错误