高手指点下,连接数据库时出现以下问题 javax.naming.NameNotFoundException: Name java:comp is not bound in this Context 我使用连接池连接MS SQL Server2000时出现上面的问题,不知道你们有无出现过,是如何解决的,产生的原因是什么?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.javer.cn/html/sheji_kaifa_fuwu/Web_kaifa/web_2007068096.html <?xml version='1.0' encoding='utf-8'?><Server> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/> <Resource name="jdbc/zhucen" type="javax.sql.DataSource"/> <ResourceParams name="UserDatabase"> <parameter> <name>factory</name> <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> </parameter> <parameter> <name>pathname</name> <value>conf/tomcat-users.xml</value> </parameter> </ResourceParams> <ResourceParams name="jdbc/zhucen"> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>maxActive</name> <value>4</value> </parameter> <parameter> <name>password</name> <value>6258422</value> </parameter> <parameter> <name>url</name> <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=zhucen;user=sa;password=6258422;</value> </parameter> <parameter> <name>driverClassName</name> <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> </parameter> <parameter> <name>maxIdle</name> <value>2</value> </parameter> <parameter> <name>username</name> <value>sa</value> </parameter> </ResourceParams> </GlobalNamingResources> <Service name="Catalina"> <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25"> </Connector> <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443"> </Connector> <Engine defaultHost="localhost" name="Catalina"> <Host appBase="webapps" name="localhost"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/> </Host> <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/> <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/> </Engine> </Service></Server> jsp代码如下<%@ page language="java" import="java.sql.*,javax.sql.*,javax.naming.*" pageEncoding="gb2312"%><%@ page contentType="text/html;charset=gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>连接MS SQL Server 2000</title></head> <body> <% Context ctx=null; Context envctx=null; DataSource ds=null; Statement stmt=null; ResultSet rs=null; Connection conn=null; ResultSetMetaData md=null; try { ctx = new InitialContext(); envctx=(Context)ctx.lookup("java:comp/env"); ds=(DataSource)envctx.lookup("java:comp/env/jdbc/zhucen"); conn=ds.getConnection(); stmt=conn.createStatement(); rs=stmt.executeQuery("select * from person"); md=rs.getMetaData(); out.print(md.getColumnLabel(1)+" "); out.print(md.getColumnLabel(2)+" "); out.print(md.getColumnLabel(3)+" "); out.print(md.getColumnLabel(4)+" "); out.print(md.getColumnLabel(5)+"<br>"); while(rs.next()) { out.println(rs.getString(1)+" "); out.println(rs.getString(2)+" "); out.println(rs.getString(3)+" "); out.println(rs.getInt(4)+" "); out.println(rs.getString(5)+"<br>"); } } catch(Exception e) { out.print(e); } finally { if(rs!=null)rs.close(); if(stmt!=null)stmt.close(); if(conn!=null)conn.close(); } %> </body></html> 我感觉是try { ctx = new InitialContext(); envctx=(Context)ctx.lookup("java:comp/env"); ds=(DataSource)envctx.lookup("java:comp/env/jdbc/zhucen"); ... }这出了问题,下面是一个例子,你参考一下: try { Context initCtx = new InitialContext(); DataSource ds; ds = (DataSource) initCtx.lookup("java:comp/env/"+new SystemParameter().JDBC_SOURCE); return ds.getConnection(); } envctx=(Context)ctx.lookup("java:comp/env"); 没完,后面要接你设的连接名如:"java:comp/env/OracleSource" 终于解决了,谢谢各位,原来java:comp/env/jdbc/zhucen中的zhucen是要我的文件夹名,我犯这个小错误 求window下bugzilla批处理安装方法(数据库可以自己安装) maven生成javadoc问题 如何用tomcat发布网站 java程序员必看的面试题 Web.XML中建立大量Servlet映射是否会影响性能? 怎么通过javaScript语句执行客户端Exe文件! 从两个不同的服务器跳转页面,怎么得到是从哪个页面地址跳转过来的? Servlet和类存储到数据库中的数据是乱码,这是为什么啊?急啊在线等待 请问,Tomcat,能够胜任省级银行系统的WEB服务器吗? 关于jsp的基本问题 我受不了了!菜鸟搞了3天了,还是不正确!!! 这是咋回事?????
<Server>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
<Resource name="jdbc/zhucen" type="javax.sql.DataSource"/>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
<ResourceParams name="jdbc/zhucen">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>6258422</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=zhucen;user=sa;password=6258422;</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
</Connector>
<Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
</Connector>
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" name="localhost">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
</Host>
<Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
</Service>
</Server>
<%@ page language="java" import="java.sql.*,javax.sql.*,javax.naming.*" pageEncoding="gb2312"%>
<%@ page contentType="text/html;charset=gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>连接MS SQL Server 2000</title>
</head>
<body>
<%
Context ctx=null;
Context envctx=null;
DataSource ds=null;
Statement stmt=null;
ResultSet rs=null;
Connection conn=null;
ResultSetMetaData md=null;
try
{
ctx = new InitialContext();
envctx=(Context)ctx.lookup("java:comp/env");
ds=(DataSource)envctx.lookup("java:comp/env/jdbc/zhucen");
conn=ds.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery("select * from person");
md=rs.getMetaData();
out.print(md.getColumnLabel(1)+" ");
out.print(md.getColumnLabel(2)+" ");
out.print(md.getColumnLabel(3)+" ");
out.print(md.getColumnLabel(4)+" ");
out.print(md.getColumnLabel(5)+"<br>");
while(rs.next())
{
out.println(rs.getString(1)+" ");
out.println(rs.getString(2)+" ");
out.println(rs.getString(3)+" ");
out.println(rs.getInt(4)+" ");
out.println(rs.getString(5)+"<br>");
}
}
catch(Exception e)
{
out.print(e);
}
finally
{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
}
%>
</body>
</html>
try
{
ctx = new InitialContext();
envctx=(Context)ctx.lookup("java:comp/env");
ds=(DataSource)envctx.lookup("java:comp/env/jdbc/zhucen");
...
}
这出了问题,
下面是一个例子,你参考一下: try
{
Context initCtx = new InitialContext();
DataSource ds;
ds = (DataSource) initCtx.lookup("java:comp/env/"+new SystemParameter().JDBC_SOURCE);
return ds.getConnection();
}
如:"java:comp/env/OracleSource"