server.xml
<Context path="/mytest" reloadable="true" docBase="D:\Java Workspace\mytest\WebRoot" workDir="D:\Java Workspace\mytest\work">
<Resource name="bean/sysprop" auth="Container" type="com.mod.MWSystemPropertyBean"
factory="org.apache.naming.factory.BeanFactory" langpath="D:/java workspace/mytest/WebRoot/properties/" />
<Resource name="jdbc/testConn"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mytest?autoReconnect=true&useUnicode=false&characterEncoding=UTF-8"
username="root"
password="aaa"
maxActive="500"
maxIdle="50"
maxWait="5000" />
</Context>
连接代码:
InitialContext ctx=new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/testConn");
this.conn = ds.getConnection();
问题:当启动一个后台线程连接数据库时,[b]偶尔[/b]会出现以下错误
javax.naming.NameNotFoundException: Name java: is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:769)
at org.apache.naming.NamingContext.lookup(NamingContext.java:152)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
系统平时使用一样的连接代码都不会出现这个错误, 只是当我new 一个线程并在线程中连接数据库时,偶尔会出现,这个错误,大概是lookup这个函数找不到数据源,不知道有没有人遇到这个错误? 如何解决? 是否server.xml还需要加其它选项?
------解决方法--------------------------------------------------------
捧个场帮你顶下
------解决方法--------------------------------------------------------
在tomcat的Admin Tool工具中对你的context进行修改,将其中的Use Naming选项改为true。
试试这样看行不行
------解决方法--------------------------------------------------------
看看这里吧
http://topic.csdn.net/t/20041011/10/3443049.html
或许对你有帮助
------解决方法--------------------------------------------------------
学习.
------解决方法--------------------------------------------------------
InitialContext ctx=new InitialContext();
Context envContext = (Context)ctx.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/testConn");
this.conn = ds.getConnection();
改为:
InitialContext ctx=new InitialContext(); //InitialContext为Context 接口类型
DataSource ds = (DataSource)ctx.lookup("java:/comp/envjdbc/testConn");
this.conn = ds.getConnection();
记得每次使用完,conn.close();把连接对象放回池中
------解决方法--------------------------------------------------------
看看这里吧
http://topic.csdn.net/t/20041011/10/3443049.html
或许对你有帮助