首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

javax.naming.NameNotFoundException: Name java: is not bound in this Context

2014-01-26 
server.xml Context path/mytest reloadabletrue docBaseD:\Java Workspace\mytest\WebRoot work

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&amp;useUnicode=false&amp;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
或许对你有帮助

        

热点排行