hi, guys.
when I  use the struts and dbcp for configure the database pool.

if the data is very large, the tomcat always throw a exception:

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error
establishing socket.
2006-8-24 9:50:08
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessorprocessChildren
严重: Exception invoking periodic operation:
java.lang.NullPointerException
       at java.util.Arrays.sort(Arrays.java:1078)
       at org.apache.naming.resources.FileDirContext.list(
FileDirContext.java:885)
       at org.apache.naming.resources.FileDirContext.listBindings(
FileDirContext.java:335)
       at org.apache.naming.resources.ProxyDirContext.listBindings(
ProxyDirContext.java:509)
       at org.apache.catalina.loader.WebappClassLoader.modified(
WebappClassLoader.java:734)
       at org.apache.catalina.loader.WebappLoader.modified(
WebappLoader.java:516)
       at org.apache.catalina.core.StandardContext.backgroundProcess(
StandardContext.java:4654)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren
(ContainerBase.java:1619)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren
(ContainerBase.java:1628)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren
(ContainerBase.java:1628)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(
ContainerBase.java:1608)
       at java.lang.Thread.run(Thread.java:534)
2006-8-24 9:50:18
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessorprocessChildren
严重: Exception invoking periodic operation:
java.lang.NullPointerException
       at java.util.Arrays.sort(Arrays.java:1078)
       at org.apache.naming.resources.FileDirContext.list(
FileDirContext.java:885)
       at org.apache.naming.resources.FileDirContext.listBindings(
FileDirContext.java:335)
       at org.apache.naming.resources.ProxyDirContext.listBindings(
ProxyDirContext.java:509)
       at org.apache.catalina.loader.WebappClassLoader.modified(
WebappClassLoader.java:734)
       at org.apache.catalina.loader.WebappLoader.modified(
WebappLoader.java:516)
       at org.apache.catalina.core.StandardContext.backgroundProcess(
StandardContext.java:4654)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren
(ContainerBase.java:1619)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren
(ContainerBase.java:1628)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren
(ContainerBase.java:1628)
       at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(
ContainerBase.java:1608)
       at java.lang.Thread.run(Thread.java:534)



My Database is  ms sql server

and my jdk version is 1.4.2
and tomcat is : 5.0.28
Struts version is : 1.2.7

My Struts configure is here:

    <data-source type="org.apache.commons.dbcp.BasicDataSource">
        <set-property property="description" value="MS SQL Server data
source"/>
        <set-property property="driverClassName" value="
com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
        <set-property property="maxActive" value="5"/>
        <set-property property="maxWait" value="-1"/>
        <set-property property="defaultAutoCommit" value="true"/>
        <set-property property="username" value="sa"/>
        <set-property property="password" value="123456"/>
        <set-property property="url"
value="jdbc:microsoft:sqlserver://10.2.0.101:1433;databasename=db"/>


My Action code is here:

  public ActionForward execute(ActionMapping mapping,
        ActionForm form,
        HttpServletRequest req,
        HttpServletResponse res )
     throws Exception {

     Connection conn = null;

       try {
        DataSource dataSource = getDataSource(req);
        conn = dataSource.getConnection();
        conn.setAutoCommit(true);

//         conn = DBManager.getConnection();
//         conn.setAutoCommit(true);


        res.setContentType("text/plain;charset=UTF-8");
        PrintWriter out = res.getWriter();

        Parser parser = new Parser(conn, out, servlet.getServletContext
().getRealPath("/upload/add"));
        parser.parse();
     } catch ( Exception sqle ) {
        Exception e = new Exception();
        e.initCause(sqle);
        throw e;
     } finally {
       try {
         conn.close();
        } catch ( Exception e ) {
           System.err.println("DataBase have a Exception : " + e);
        }
     }



     return mapping.findForward("parsesucess");

  }


and I use the connection in Class Parser.

but I directly use the JDBC, but not use the datasource pool
there is not Exception.

why?


Please help me

Thx

Mike.G

Reply via email to