我等了一夜了,也没解决问题!(续)

wanglei810522 2004-10-27 10:39:45
运行带数据库连接池的例子时jbuilder提示这个错误:
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
代码肯定没错,是书上的例子,我想应该是配置的问题!

以下是我按照某教程在jbuilder中自带的tomcat4.0.6中server.xml中的配置:(各位这个问题我已经弄了好几天了,请稍微的认真看一下,拜托大家了!)
<context path = "/bookshop" docBase = "F:\ChengXu\java\j2ee\bookshop"
debug = "0" reloadable = "true" crossContext = "true">
<Resource name = "jdbc/books" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/connectDB">
<parameter>
<name>maxActive</name>
<!-- Maximum number of DB connections in pool.Set to 0 for no limit. -->
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>false</value>
</parameter>
<parameter>
<name>factory</name>
<value>
org.apache.commons.dbcp.BasicDataSourceFactory//没有这个包,是不是要另外下载,下载之后放到哪?
</value>
</parameter>
<parameter>
<name>username</name>
<value></value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>//这个包是从哪冒出来的,我没有这个包!
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:jtds:sqlserver://127.127.127.127:1433/books
</value>
</parameter>
</ResourceParams>
</Resource>
</context>
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
520zju 2004-10-28
  • 打赏
  • 举报
回复
http://blog.csdn.net/netsniffer/archive/2004/10/14/135827.aspx

这是你另外一个帖子上,一位朋友发的,给你转过来,去看看好了

这种配置很多问题的,跟自己的机子也很大关系的,还是照着例子自己试一遍比较好

Good luck!
520zju 2004-10-28
  • 打赏
  • 举报
回复
<context path = "/bookshop" docBase = "F:\ChengXu\java\j2ee\bookshop"
debug = "0" reloadable = "true" crossContext = "true">
<Resource name = "jdbc/books" auth="Container"
~~~~~~~~~~~~~ type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/connectDB">
~~~~~~~~~~~~~~~
这两个怎么名字不一样了,这样jdbc/books就没有配置的参数了
wanglei810522 2004-10-28
  • 打赏
  • 举报
回复
我在init()中加了System.out.println,根本不显示
520zju 2004-10-28
  • 打赏
  • 举报
回复
从程序上看没有什么问题啊

这样,你在init方法里加一些print的内容,看看init到底有没有执行。

另外,jdbc:microsoft:sqlserver://localhost:1433;databasename=Northwind
这行里的databasename是不是要改成DatabaseName啊
wanglei810522 2004-10-28
  • 打赏
  • 举报
回复
谢谢各位的帮助,终于没有错误提示了。但是为什么会找不到记录呢?离成功不远了,大家再帮我一把!小弟真的不知怎么感谢大家!

下面是javaBean的代码:
package foo;

import javax.naming.*;
import javax.sql.*;
import java.sql.*;

public class Test {

String foo = "Not Connected";
int bar = -1;

public void init() {
try{
Context ctx = new InitialContext();
if(ctx == null )
throw new Exception("Boom - No Context");

DataSource ds = (DataSource)ctx.lookup("jdbc/test");

if (ds != null) {
Connection conn = ds.getConnection();

if(conn != null) {
foo = "Got Connection " + conn.toString();
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("select * from exam");
if(rst.next()) {
foo=rst.getString("value");
bar=rst.getInt("id");
}
conn.close();
}
}
}//end try
catch(Exception e) {
e.printStackTrace();
}
}//end init()

public String getFoo() {
return foo;
}
public int getBar() {
return bar;
}
}

这是jsp的代码:
<%@
page language = "java"
import = "foo.*"
%>
<html>
<head>
<title>DB Test</title>
</head>
<body>

<%
Test tst = new Test();
tst.init();
%>

<h2>Ms sql server 2000 java search Results</h2>
Foo <%= tst.getFoo() %><br/>
Bar <%= tst.getBar() %>

</body>
</html>
页面显示的是:“Not Connected”和 “-1”,好像init()没有执行,不知是为什么?
wanglei810522 2004-10-28
  • 打赏
  • 举报
回复
下面是错误提示:
org.apache.jasper.JasperException: Unable to compile class for JSP
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:346)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:414)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

Unable to find a javac compiler;(怎么会找不到编译器?听朋友说要将jdk里面的tools.jar复制到tomcat的目录下,是这样吗?)
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:106)
org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:935)
org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:764)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:382)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

wanglei810522 2004-10-28
  • 打赏
  • 举报
回复
现在又能启动了!
如果配置文件没错会不会是因为我的文件放到位置不对?
目录结构:
webapps\test\WEB-INF\classes
jsp文件在test下面
web.xml在WEB-INF下面
我又重新写了一遍server.xml,各位看一下有没有错误:
==========================================================================================
<Context path="/test" docBase="D:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\test" debug="5" reloadable="true" crossContext="true">

<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value></value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:microsoft:sqlserver://localhost:1433;databasename=Northwind
</value>
</parameter>
</ResourceParams>
</Context>

皮鲁 2004-10-28
  • 打赏
  • 举报
回复
出现什么错误?
wanglei810522 2004-10-28
  • 打赏
  • 举报
回复
我就是按照这个例子做的,tomcat根本就不能启动,还原之后就好了!哪里还会出错?
wanglei810522 2004-10-27
  • 打赏
  • 举报
回复
这个包加入tomcat的common\lib目录下,但是结果还是错误!仍提示:
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
是不是还有哪配置不对!
另外,我将net.sourceforge.jtds.jdbc.Driver这个换成了com.microsoft.jdbc.sqlserver.SQLServerDriver这个,应该没问题吧?

下面是我在程序中的代码片断,大家看看有没有错误(我是按照书上写的):
try{
InitialContext ic = new InitialContext();
DataSource source = (DataSource)ic.lookup("jdbc/books");
//这里原来是“java:comp/env/jdbc/books”,但是我想不通为什么要加“java:comp/env/”这个,所以就去掉了,当然加上也不行!
titlesQuery = connection.prepareStatement(
"SELECT * FROM titles");
}
catch(Exception ce){
ce.printStackTrace();
}

我觉着还是配置有问题,代码可能有点长,但我还是恳求各位能仔细得看一下!我的分用完了,不然肯定给!
wanglei810522 2004-10-27
  • 打赏
  • 举报
回复
这个包已经找到了,我想知道它的作用!
wanglei810522 2004-10-27
  • 打赏
  • 举报
回复
org.apache.commons.dbcp.BasicDataSourceFactory这个到哪去下载?给个详细的地址!tomcat的网站上太多了,不知下哪一个!
这个类的作用是什么?看文章上的介绍没看懂!最好说得通俗点!现有的类有没有能替代它的?
520zju 2004-10-27
  • 打赏
  • 举报
回复
<parameter>
<name>factory</name>
<value>
org.apache.commons.dbcp.BasicDataSourceFactory//没有这个包,是不是要另外下载,下载之后放到哪?
~~~~~~~~~~~~~~~~~——》放到tomact的common/lib下面

</value>
</parameter>
<parameter>
<name>username</name>
<value></value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>//这个包是从哪冒出来的,我没有这个包!
*************************************************************************************
这个是某个数据库(偶也没见过这个驱动)的驱动程序类,可以到http://sourceforge.net下载。
*************************************************************************************
</parameter>
<parameter>
<name>url</name>
<value>
jdbc:jtds:sqlserver://127.127.127.127:1433/books
***************************************************************************
从这里看,上面那个驱动是sql server的驱动,但是这个url应该是127.0.0.1吧
***************************************************************************
</value>
</parameter>
</ResourceParams>
</Resource>
</context>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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