免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1219 | 回复: 2
打印 上一主题 下一主题

请大侠指点一二。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-02 07:52 |只看该作者 |倒序浏览
本人是新手,用的环境是Linux 9 + Mysql 4.1 + Tomcat 5, 在Tomcat的官方站点(http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html )看到一例,想操演一把,无奈水平太臭,两天了还是一大堆错误,请大侠给点详细解释,如何编译,如何Deploy?

谢谢先!

论坛徽章:
0
2 [报告]
发表于 2004-03-02 09:06 |只看该作者

请大侠指点一二。

如果全部按照官方有关该实例的文档去做,应当没有问题
如果在操作过程出现了问题,请写出你的错误信息

论坛徽章:
0
3 [报告]
发表于 2004-03-02 10:35 |只看该作者

请大侠指点一二。

但官方文档上没有Deploy 的具体步骤,因为我太菜,对Java知之不多,按照我的理解:建了一个目录结构:
+DBTest
|------+src
         |------+DBTest.java
|------+index.jsp
|------+WEB-INF
         |------+classes
         |------+web.xml

============================================
DBTest.java
============================================
package foo;

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

public class DBTest {

  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(
               "java:comp/env/jdbc/TestDB";

      if (ds != null) {
        Connection conn = ds.getConnection();
              
        if(conn != null)  {
            foo = "Got Connection "+conn.toString();
            Statement stmt = conn.createStatement();
            ResultSet rst =
                stmt.executeQuery(
                  "select id, foo, bar from testdata";
            if(rst.next()) {
               foo=rst.getString(2);
               bar=rst.getInt(3);
            }
            conn.close();
        }
      }
    }catch(Exception e) {
      e.printStackTrace();
    }
}

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

===========================================
index.jsp
===========================================
<html>;
  <head>;
    <title>;DB Test</title>;
  </head>;
  <body>;

  <%
    foo.DBTest tst = new foo.DBTest();
    tst.init();
  %>;

  <h2>;Results</h2>;
    Foo <%= tst.getFoo() %>;<br/>;
    Bar <%= tst.getBar() %>;

  </body>;
</html>;

============================================
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>;MySQL Test App</description>;
  <resource-ref>;
      <description>;DB Connection</description>;
      <res-ref-name>;jdbc/TestDB</res-ref-name>;
      <res-type>;javax.sql.DataSource</res-type>;
      <res-auth>;Container</res-auth>;
  </resource-ref>;
</web-app>;

===========================================
server.xml
===========================================
<?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"/>;
    <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>;
  </GlobalNamingResources>;

<Context path="/DBTest" docBase="DBTest"
        debug="5" reloadable="true" crossContext="true">;

  <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_DBTest_log." suffix=".txt"
             timestamp="true"/>;

  <Resource name="jdbc/TestDB"
               auth="Container"
               type="javax.sql.DataSource"/>;

  <ResourceParams name="jdbc/TestDB">;
    <parameter>;
      <name>;factory</name>;
      <value>;org.apache.commons.dbcp.BasicDataSourceFactory</value>;
    </parameter>;

    <!-- Maximum number of dB connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to 0 for no limit.
         -->;
    <parameter>;
      <name>;maxActive</name>;
      <value>;100</value>;
    </parameter>;

    <!-- Maximum number of idle dB connections to retain in pool.
         Set to 0 for no limit.
         -->;
    <parameter>;
      <name>;maxIdle</name>;
      <value>;30</value>;
    </parameter>;

    <!-- Maximum time to wait for a dB connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->;
    <parameter>;
      <name>;maxWait</name>;
      <value>;10000</value>;
    </parameter>;

    <!-- MySQL dB username and password for dB connections  -->;
    <parameter>;
     <name>;username</name>;
     <value>;javauser</value>;
    </parameter>;
    <parameter>;
     <name>;password</name>;
     <value>;javadude</value>;
    </parameter>;

    <!-- Class name for mm.mysql JDBC driver -->;
    <parameter>;
       <name>;driverClassName</name>;
       <value>;org.gjt.mm.mysql.Driver</value>;
    </parameter>;

    <!-- The JDBC connection url for connecting to your MySQL dB.
         The autoReconnect=true argument to the url makes sure that the
         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
         connection.  mysqld by default closes idle connections after 8 hours.
         -->;
    <parameter>;
      <name>;url</name>;
      <value>;jdbc:mysql://localhost:3306/javatest?autoReconnect=true</value>;
    </parameter>;
  </ResourceParams>;
</Context>;


  <Service name="Catalina">;
    <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443">;
    </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>;

=========================================
在用
javac DBTest.java 后,将其拷贝到WEB-INF\classes目录下,然后,用Tomcat Admintrator 将其Deploy,再浏览器中输入:http://localhost:8080/DBTest

然后出现下面的错误:
===========================================
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 7 in the jsp file: /index.jsp

Generated servlet error:
    [javac] Compiling 1 source file

/usr/local/jakarta-tomcat-5.0.19/work/Catalina/localhost/DBTest/org/apache/jsp/index_jsp.java:50: cannot resolve symbol
symbol  : class DBTest
location: class org.apache.jsp.index_jsp
    foo.DBTest tst = new foo.DBTest();
    ^



An error occurred at line: 7 in the jsp file: /index.jsp

Generated servlet error:
/usr/local/jakarta-tomcat-5.0.19/work/Catalina/localhost/DBTest/org/apache/jsp/index_jsp.java:50: cannot resolve symbol
symbol  : class DBTest
location: class org.apache.jsp.index_jsp
    foo.DBTest tst = new foo.DBTest();
                     ^
2 errors


        org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127)
        org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351)
        org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:45
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:553)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:24
        javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP