在servlet中写初始化代码,然后将这个servlet配置为load on startup,就是工作目录一启动就运行的servlet.

解决方案 »

  1.   

    只是最近我比较活跃。赚到猩猩就停止 :)))
    如果你的工作目录\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>
      <servlet>
        <servlet-name>SharkInitServlet</servlet-name>
        <servlet-class>你的Servlet类路径,比如:servlet.MyServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
      </servlet>
    </web-app>----------
    接着,servlet代码:
    package servlet.MyServlet;import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public final class SharkInitServlet extends HttpServlet
    {
        public void init()
        {
            // 做点什么吧
        }
    }
      

  2.   

    我们一开始的那个论坛作完了。。可是接下来要做的东西还要辛苦。
    要用到数据库连接池,自定义标签等一些新的东西。。学java好辛苦的说
      

  3.   

    对了。。xml要加上servlet-map吗?
    servlet是不是可以只要init方法。。
    有没有什么简单的可以实现线城池的方法。。
    我对目前用到的方法有一种深深的恐惧感
    非常怀疑可能失败。。我是从论坛上看到的那个javabean实现线程类。。
    然后自己写了个实现类。。
    不过我看帖子说这种javabean不能适合做实际应用。。会出bug .
    tomcat有自身比较好的线城池机制。。
    可是要用到jndi..我对jndi生疏的很...
    那有什么适合我的线城池方法?
      

  4.   

    自己写数据库连接池是比较惨,自定义标签要自己写的话,那真是惨死了。可以考虑直接用struts/jsf/apache的,呵呵。
      

  5.   

    对于一个load on startup的servlet来说,只需要init方法。不考虑tomcat本身的数据库连接池吗?我们公司的部门经理原来写过一个连接池,使用Stack堆栈管理连接,预先建好连接,只负责出入栈。使用时不管比它们。但是这样只适合20人之内使用,因为每个连接占用的资源是很大的。
      

  6.   

    恩。。是的。。我也想用tomcat里的连接池。。但是我发现里面用到了一些jndi的知识。。我对这种东西完全不了解
    所以有些担心。。
      

  7.   

    呵呵。。刚刚出去买了夜宵和水。。今天晚上刷夜看能jndi...
      

  8.   

    也就2行代码。Context    ctxt = new InitialContext();
    DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
      

  9.   

    包括取得连接3行:
    Connection conn = ds.getConnection();
      

  10.   

    jndi不是还要建个什么域名服务器的什么吗?
      

  11.   

    什么名字服务器,目录服务器什么的。。
    好多概念阿。。翻书的时候又看到什么jini..什么hitemite..头都大了。
      

  12.   

    使用jndi需要配置什么才能使用?
    我电脑配置是tomcat5.0.12
    jdk1.4.2
      

  13.   

    今晚解决你这个问题就手工。只是使用的话,是很简单的,因为tomcat本身就是服务器了。从tomcat admin界面配置连接池方法:记住先把所需数据库的jar文件放到%CATALINA_HOME%\common\lib目录。http://localhost:8080/admin密码和用户名在你安装的时候设定的,如果忘记(或没有)的话,去改%CATALINA_HOME%\conf\tomcat-users.xml,添加admin和manager两个role,一个用户,该用户的role为admin和manager就可以了,按原有的xml复制修改就可以。1.点击左边框架中Service菜单项左边的小圆,展开列表.
    2.点击左边框架中Host (localhost)菜单项左边的小圆,展开列表.
    3.点击左边框架中你要添加连接池的工作目录的菜单项左边的小圆,展开列表.
    4.点击左边框架中Data Sources蔡单项,右边框架出现设置页。
    5.从右边框架中右上角的下拉列表中选择create new data source
    6.怎么填看下面的示例:
    7.点击右边框架中右上角save按钮
    8.点击顶部框架Commit Changes按钮。连接池设置示例:
    JNDI Name: jdbc/MyDataSource
    Data Source URL: jdbc:oracle:thin:@localhost:1521:MyOracle
    JDBC Driver Class: oracle.jdbc.driver.OracleDriver
    User Name: test
    Password: test使用示例:
    Context    ctxt = new InitialContext();
    DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
    Connection conn = ds.getConnection();
    conn.close();
      

  14.   

    恩。。那是瞒远的。。不过以后要是来武汉玩得话也可以过来找我。。
    xixi..省了一餐饭钱哦
    对了。。学j2ee这个东西快的话1年能初窥门道吗?
      

  15.   

    关键是要碰到像我这样能够一直跟进问题状态的人。其实很多问题只是繁琐,但难度不高。初学者走到某一步出错之后看不到问题所在,等回答者解决了之后他又走到下一个常见错误处......如此循环,所以有耐心跟进的人不多。
    而且大部分人工作在身,跟进初学者问题进度工作进度就慢了。实话说,j2ee大部分用途是数据库系统开发,目前数据库系统开发在国内不怎么挣钱了。所以我推荐j2me,或者专门研究oracle数据库优化配置配合java开发,如果数学很好,就攻c/c++,作算法分析,对系统内核有天分的也是c之类的了。我现在就是做数据库系统开发,工作比较累,薪水也不高(考虑跳槽中)
      

  16.   

    恩。。呵呵。其实我本来也不是准备学java的。。我主要看的是游戏设计的书。很认真地看了两年。。
    今年大4,实习的时候和几个人分到了武汉开目。。那家公司主要是啃java的。。于是我们几个人就开始了java的学习。。到现在也有两个多月了。。而且也开始做一些实际的项目。。想想。。
    学java的话可以做到实际的项目。。有工作经验。。比自己自学游戏开发怎么说也要好些。。
    于是就开始了j2ee之路。。很辛苦有时候也想过不搞了。。但是。。自己学了这么长时间。。花了这么多功夫。。怎么说也应该学点什么什么都没学会就放手了。说不过去。
      

  17.   

    对了。。用这些要import什么包
    Context    ctxt = new InitialContext();
    DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
    Connection conn = ds.getConnection();
    conn.close();
    你要不要gmail。我有几个邀请函你要就发给你。。
      

  18.   

    贴漏,全部如下:import javax.naming.*;
    import java.sql.*;
    import javax.sql.*;
    import java.util.*;
      

  19.   

    谢谢你的gmail,平时不怎么用mail的,给我也是浪费资源。呵呵 :)
      

  20.   

    哈哈。。可惜啊。。
    对了。。要抛出什么异常吗?系统提示4个错误。。
    就是
    Context    ctxt = new InitialContext();
    DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
    Connection conn = ds.getConnection();
    conn.close();
    都要定义抛出异常
    我都定义了Exception他又说什么---------- java编译 ----------
    DataBaseBean.java:15: illegal start of type
        try{
        ^
    DataBaseBean.java:61: <identifier> expected
    }
    ^
    2 errors输出完成 (耗时 0 秒) - 正常终止
    我很仔细的检查了括号阿什么的。。应该不是这得错误
      

  21.   

    package db;
    import java.sql.*;
    import java.io.*;
    import javax.naming.*;
    import javax.sql.*;
    import java.util.*;
    public class DataBaseBean{
    private final String  jdbcdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private final String  dburl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jbb";
    private final String dbUsername="sa";
    private final String dbPassword="hubuonline";
    Statement  stmt;
    CallableStatement cstmt;
    ResultSet rs;
        try{
          Context ctxt = new InitialContext();
          DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
          Connection conn = ds.getConnection();}catch(Exception e){
      System.out.println("error");
      }   public DataBaseBean(){
        try{
           stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
               System.out.println("success to connect!");
            }catch(SQLException ex){ 
        System.out.println("error occurs when connecting");System.err.println(ex);
        }
        }
        public CallableStatement getCstmt(String strSQL){
        try{
                cstmt=conn.prepareCall(strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            return cstmt;
            }catch(SQLException e){
        System.out.println(e);return null;
        }
    }
    public ResultSet executeQuery(String sql){
            try{
            rs=stmt.executeQuery(sql);
        }catch(SQLException e){
        System.out.print("error occured when querying !");
        }
        return rs;
    }
        public void  executeUpdate(String sql){
        try{
             stmt.executeUpdate(sql);
        }catch(SQLException e){
         System.out.print("error occured when updatinging !");
         e.printStackTrace();
        }
    }
    public void close(){
            try{
     conn.close();
        }catch(Exception e){
    System.out.println("error");
    }
    }
    }
      

  22.   

    package db;
    import java.sql.*;
    import java.io.*;
    import javax.naming.*;
    import javax.sql.*;
    import java.util.*;
    public class DataBaseBean{
    private final String  jdbcdriver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private final String   dburl="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jbb";
    private final String dbUsername="sa";
    private final String dbPassword="hubuonline";
    Statement  stmt;
    CallableStatement cstmt;
    ResultSet rs;
      try{
          Context ctxt = new InitialContext();
          DataSource ds   = (javax.sql.DataSource)ctxt.lookup  ("java:comp/env/jdbc/MyDataSource");
          Connection conn = ds.getConnection();
      }catch(Exception e){
      System.out.println("error");
      }
    public DataBaseBean(){
         try{
         stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
               System.out.println("success to connect!");
         }
         catch(SQLException ex){ 
          System.out.println("error occurs when connecting");
          System.err.println(ex);
         }
    }
    public CallableStatement getCstmt(String strSQL){
         try{
            cstmt=conn.prepareCall  (strSQL,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            return cstmt;
        }
         catch(SQLException e){
         System.out.println(e);
         return null;
         }
    }
    public ResultSet executeQuery(String sql){
        try{
           rs=stmt.executeQuery(sql);
        }catch(SQLException e){
        System.out.print("error occured when querying !");
        }
        return rs;
    }
    public void  executeUpdate(String sql){
        try{
           stmt.executeUpdate(sql);
        }catch(SQLException e){
        System.out.print("error occured when updatinging !");
        e.printStackTrace();
        }
    }
        public void close(){
          try{
    conn.close();
          }catch(Exception e){
          System.out.println("error");
          }
    }
    }
      

  23.   

    try{
          Context ctxt = new InitialContext();
          DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
          Connection conn = ds.getConnection();}catch(Exception e){
      System.out.println("error");
      }这段是不是应该放到public DataBaseBean(){
        try{
                    // 加到这里
           stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
               System.out.println("success to connect!");
            }catch(SQLException ex){ 
        System.out.println("error occurs when connecting");System.err.println(ex);
        }
        }
      

  24.   

    hehe ..成功编译了。。谢谢你啊。。
    睡觉啦。。~~88888
      

  25.   

    DataSource只需要初始化1次:
    public class DbPool
    {
        private static DataSource ds = null;    public DbPool()
        {
            if ( ds != null )
            {
                try
                {
                    Context ctxt = new InitialContext();
                    DataSource ds   = (javax.sql.DataSource)ctxt.lookup("java:comp/env/jdbc/MyDataSource");
                }
                catch ( Exception e )
                {
                 }
            }
        }
    }