package note;import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;import org.apache.struts.legacy.GenericDataSource;public final class DBInitServlet extends HttpServlet{
   public void init(ServletConfig config) throws ServletException {
    super.init(config);
    try {
    GenericDataSource ds = new GenericDataSource();
    ds.setDriverClass(getInitParameter("driverClass"));
    ds.setUrl(getInitParameter("jdbcURL"));
    ds.setMinCount(Integer.parseInt(getInitParameter("minCount")));
    ds.setMaxCount(Integer.parseInt(getInitParameter("maxCount")));
    ds.setAutoCommit(false);
    ds.open();
    ConnectionPool.init(ds);
    }catch(SQLException e){
    e.printStackTrace();
    throw new ServletException("Unble to open DataSource");
   
     }
   }
}

解决方案 »

  1.   

    /* 创建日期 2005-3-20 */
    package note;import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;public class ConnectionPool {
    private DataSource ds;
    public static ConnectionPool mySelf;
    private ConnectionPool(DataSource ds) {
    this.ds = ds;

    }
    public static void init(DataSource ds){
    mySelf = new ConnectionPool(ds);
    }
    public static ConnectionPool getInstance(){
    if(mySelf == null) {
    throw new IllegalStateException("Pool not Initialized");
    }
    return mySelf;

    }
    public Connection getConnection()throws SQLException {
    return ds.getConnection();
    }

    }
      

  2.   

    我用的是jb2005来学习struts的。从网上下了几个基于struts的程序,数据库连接也都是写到类文件里的,我也看过好几本参考书。。关于在struts-config.xml文件中定义数据库连接,然后,在类文件里老是取不到连接,请过来的朋友指点。  我在struts-config.xml文件中是这样定义的,
     <struts-config>
      <data-sources>
        <data-source key="xue" type="org.apache.commons.dbcp.BasicDataSource">
          <set-property property="driverClassName" value="sun.jdbc.odbc.JdbcOdbcDriver"/>
          <set-property property="url" value="jdbc:odbc:xue"/>
          <set-property property="username" value="sa"/>
          <set-property property="password" value=""/>
        </data-source>
      </data-sources>
      <form-beans>
     data-sources标签是struts-config.xml文件首先定义的,在与其他标签顺序关系上没有冲突。 里边的url,username,password也没有错,而且,为了确保万一,我写了个类文件连接了数据库是可以通过的,这里的org.apache.commons.dbcp.BasicDataSource也没有问题,我用的是jb,我已经成功把这个jar文件加入进来了,也没出现红色下划线的提示,我想应该也没问题的然后,我就在类文件里写到
      try{
               DataSource dataSource=getDataSource(servletRequest,"xue");
               Connection con=dataSource.getConnection();
               dbdao dd=new dbdao(con);
               dbaa da=new dbaa();
               da.setName(username);
               dd.ins(da);
               return (actionMapping.findForward("success"));
               }
            catch(Exception e){
                 e.printStackTrace();
                 throw new RuntimeException(e.getMessage());
             }
    -----------------------------------------
      
      代码已经try/catch起来了,现在用
          DataSource dataSource=getDataSource(servletRequest,"xue");
          Connection con=dataSource.getConnection();
       connection对象根本就得不到数据库连接。报告这样的错误:
       错误很明显了,是得不到数据源,我好郁闷,看了好几本参考书,都是说只在struts-config.xml定义下,然后,再通过两句代码就可以ok了,难道,还需要设置别的地方吗?书上也没这么说啊。请高人指点。
       运行错误如下:::
     description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Servlet.init() for servlet action threw exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    java.lang.Thread.run(Thread.java:534)
    root cause java.lang.NoClassDefFoundError: org/apache/struts/legacy/GenericDataSource
    java.lang.ClassLoader.defineClass0(Native Method)
    java.lang.ClassLoader.defineClass(ClassLoader.java:537)
    java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1634)
    org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:860)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1307)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
    java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
    org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:1084)
    org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)
    javax.servlet.GenericServlet.init(GenericServlet.java:211)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    java.lang.Thread.run(Thread.java:534)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
    --------------------------------------------------------------------------------Apache Tomcat/5.0.28
      

  3.   

    xiaowenand(与你有缘) 朋友,我看的几本参考书上说是在.xml中定义好了,在类中通过两句代码就可以得到了,怎么还需要在类中写另外一些连接设置的代码吗?
     偶刚接触struts不长时间,请多多指点。
      

  4.   

    struts1.1好像已经取消了对struts-config.xml配置数据库连接的,好像改成另外的一个项目了
    你可以在tomcat中配置连接池,也可以用struts+hibernate的方式
      

  5.   

    那吗这种在struts-config.xml文件中培植数据库连接,是不是只在以前的老版本中才行啊。。我现在用的是jbuilder2005。不错,struts的版本是1.1呢。对了,如果,要是在tomcat中配置连接池该怎么配置,又该怎样取得连接呢。。请楼上的朋友帮忙解答下。。
      

  6.   

    飞思科技出了一本书,名字是《JSP应用开发详解》,第13章讲了在TOMCAT中配置连接池以及怎样取得连接的问题,你可以找来看一下。
      

  7.   

    连接池这个好说,在这里我还是想问,在struts-config.xml文件中定义数据库连接,再通过那两句代码 
     DataSource dataSource=getDataSource(servletRequest,"dataSource");
       Connection con=dataSource.getConnection();
     还能不能得到,是不是在struts1.1中不支持了啊?我的代码我看了几次,感觉都没什么问题,就是在运行的时候报找不到数据源,,如果,不支持,那么一般在struts1.1中,如果,不把数据库连接写到类文件中,是怎么样得到数据库连接的,拜托,路过的高人给解答下,以前的一个问题了,一直没有得到解决,拜托了。。