TOMCAT 连接池错误: javax.naming.NameNotFoundException: Name java: is not bound in this Context

highscore2 2008-10-20 01:15:18
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();

问题:当启动一个后台线程连接数据库时,偶尔会出现以下错误
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还需要加其它选项?
...全文
1398 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiyuzhongxin789 2008-10-26
  • 打赏
  • 举报
回复
看看这里吧
http://topic.csdn.net/t/20041011/10/3443049.html
或许对你有帮助
highscore2 2008-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yinyuan1987 的回复:]
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.g…
[/Quote]

InitialContext改为Context 有区别吗?网上很多例子都是用InitialContext
  • 打赏
  • 举报
回复
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();把连接对象放回池中
java__king 2008-10-20
  • 打赏
  • 举报
回复
学习.
x____ 2008-10-20
  • 打赏
  • 举报
回复
看看这里吧
http://topic.csdn.net/t/20041011/10/3443049.html
或许对你有帮助
highscore2 2008-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 suhaibolove 的回复:]
在tomcat的Admin Tool工具中对你的context进行修改,将其中的Use Naming选项改为true。

试试这样看行不行
[/Quote]

tomcat 5.5 好象没有admin tool,能不能详细说一下如何操作?
suhaibolove 2008-10-20
  • 打赏
  • 举报
回复
在tomcat的Admin Tool工具中对你的context进行修改,将其中的Use Naming选项改为true。

试试这样看行不行
mjjzg 2008-10-20
  • 打赏
  • 举报
回复
捧个场帮你顶下
highscore2 2008-10-20
  • 打赏
  • 举报
回复
使用的是tomcat 5.5 版本 + mysql 5.0 或 6.0

23,406

社区成员

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

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