我测试数据库连接池,例子是Tomcat上的,环境Tomcat4.1+JDK1.4.2+Windows2000Pro,目前的Web部署如下:
Tomcat 4.1\webapps\MyTest(我的测试应用目录)
Tomcat 4.1\webapps\MyTest\classes\foo\DBTest.class
Tomcat 4.1\webapps\MyTest\WEB_INF\web.xml
Tomcat 4.1\webapps\MyTest\test.jsp
其中:test.jsp如下
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
test
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<%
foo.DBTest tst=new foo.DBTest();
        tst.init();
%>
  <h2>Results</h2>
    Foo <%= tst.getFoo() %><br/>
    Bar <%= tst.getBar() %>
</body>
</html>
在IE中键入http://localhost:8080/MyTest/test.jsp,提示:
HTTP Status 500 - 
--------------------------------------------------------------------------------
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 11 in the jsp file: /test.jspGenerated servlet error:
    [javac] Compiling 1 source fileD:\Tomcat 4.1\work\Standalone\localhost\MyTest\test_jsp.java:51: package foo does not exist
foo.DBTest tst=new foo.DBTest();
           ^
An error occurred at line: 11 in the jsp file: /test.jspGenerated servlet error:
D:\Tomcat 4.1\work\Standalone\localhost\MyTest\test_jsp.java:51: package foo does not exist
foo.DBTest tst=new foo.DBTest();
                              ^
2 errors at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:85)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:248)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:315)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:328)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:427)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:142)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:240)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:809)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:200)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:146)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:209)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:144)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2358)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:118)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:948)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:152)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
--------------------------------------------------------------------------------
Apache Tomcat/4.1.31这个应该是没有找到包foo的错误,对吗?这些文件要怎么样放置,或进行什么配置,才可以?谢谢各位了,初学Java,不好意思,请各位帮帮忙!

解决方案 »

  1.   

    把class文件按目录结构放在web-inf/class下
      

  2.   

    1、Tomcat 4.1\conf\server.xml配置如下: <!-- My Oracle Connection Pool Test -->
    <Context path="/MyTest" docBase="MyTest"
    debug="5" reloadable="true" crossContext="true">   <Logger className="org.apache.catalina.logger.FileLogger"
     prefix="localhost_MyTest_log." suffix=".txt"
     timestamp="true"/> <Resource name="jdbc/MyTest" auth="Container"
      type="javax.sql.DataSource"/>  <ResourceParams name="jdbc/MyTest">
      <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
      </parameter>
      <parameter>
    <name>driverClassName</name>
    <value>oracle.jdbc.driver.OracleDriver</value>
      </parameter>
      <parameter>
    <name>url</name>
    <value>jdbc:oracle:thin:@10.21.106.127:1521:pcsdb</value>
      </parameter>
      <parameter>
    <name>username</name>
    <value>wei</value>
      </parameter>
      <parameter>
    <name>password</name>
    <value>wei</value>
      </parameter>
      <parameter>
    <name>maxActive</name>
    <value>20</value>
      </parameter>
      <parameter>
    <name>maxIdle</name>
    <value>10</value>
      </parameter>
      <parameter>
    <name>maxWait</name>
    <value>-1</value>
      </parameter>
      <parameter>
        <name>removeAbandoned</name>
        <value>true</value>
      </parameter>
      <parameter>
        <name>removeAbandoned</name>
        <value>true</value>
      </parameter>
      <parameter>
        <name>removeAbandoned</name>
        <value>true</value>
      </parameter>
      <parameter>
        <name>removeAbandonedTimeout</name>
        <value>60</value>
      </parameter>
      <parameter>
        <name>logAbandoned</name>
        <value>true</value>
      </parameter>
    </ResourceParams>
    </Context>2、Tomcat 4.1\webapps\MyTest\WEB_INF\web.xml配置如下:
    <?xml version="1.0" encoding="ISO-8859-1"?>
        <!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
      <description>Oracle Test App</description>
      <resource-ref>
       <description>Oracle Datasource example</description>
       <res-ref-name>jdbc/MyTest</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
      </resource-ref>
    </web-app>
      

  3.   

    sydoksxl() :这个我试过,不行的。一样的错误提示
      

  4.   

    哈哈,我找到原因了,大家注意没有,文件夹WEB_INF是错误的,应该是WEB-INF