我都不知道你的JNDI名是写在那里的.

解决方案 »

  1.   

    有人能够给我一个这样的BEAN的原码吗?
      

  2.   

    Context ntx=(Context)ctx.lookup("java:comp/env");
    ds = (DataSource)ntx.lookup("jdbc/sa");在你的配置文件中就没有见  comp/env  ,,,,,
    你是凭什么调用呀!
    或者你在其他的地方做了说明!
      

  3.   

    我把我的出错再贴一遍吧:数据源配置:
     <data-sources >
          <data-source key="org.apache.struts.action.DATA_SOURCE">
             <set-property property="password" value="ceshi" />
             <set-property property="minCount" value="1" />
             <set-property property="maxCount" value="10" />
             <set-property property="user" value="ceshi" />
             <set-property property="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
             <set-property property="description" value="SQLSERVER DATA_SOURCES" />
             <set-property property="url" value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=eclipse" />
             <set-property property="readOnly" value="false" />
             <set-property property="autoCommit" value="false" />
             <set-property property="loginTimeout" value="10" />
          </data-source>   </data-sources>
    连接的JAVABEAN:
    package database;import java.sql.*;public class DBConn {
    static Connection conn=null;
    static ResultSet rs=null;
    static Statement stmt=null;
    public DBConn(){
    }
    public static void getConnection(javax.sql.DataSource datasource){
    try{
    conn=datasource.getConnection();

    }catch(Exception e){
    System.out.println(e.getMessage());
    }
    }

    public void open(){
    try{
    stmt=conn.createStatement();
    }
    catch(Exception e){
    System.out.println(e.getMessage());
    }
    }

    public int getCount(String sql)
    {
    int getCount=0;

    try
    {
    open();
    rs=stmt.executeQuery(sql);
    rs.last();
    getCount=rs.getRow();

    }
    catch (SQLException ex)
    {
    System.out.println("sql.executeQuery:"+ex.getMessage());
    }
    return getCount;

    }

    public ResultSet Query(String sql){
    open();
    try {
    rs = stmt.executeQuery(sql);
    conn.close();
    stmt.close();

    catch(Exception ex) { 
    System.err.println(ex.getMessage());
    }
    return rs;
    }

    public void update(String sql)
    { open();
    try
    {
    stmt.executeUpdate(sql);
    conn.close();
    stmt.close();
    }
    catch (Exception ex)
    {
    System.out.println("sql.executeQuery:"+ex.getMessage());
    }
    }
    public void close(){
    try{
    rs.close();
    stmt.close();
    conn.close();
    }
    catch(Exception e){

    }
    }
    }
    调用的页面:
    <%@page contentType="text/html;charset=gb2312"%>
    <%@page language="java" import="java.sql.*" %>
    <jsp:useBean id="db" scope="page" class="database.DBConn" />
    <html>
    <head>
    <title>测试数据库</title>
    </head>
    <body bgcolor="#ffffff">
    <table width="80%" border="0" align="center" bgcolor="#f2f2f2">
      <tr> 
        <td height="19"> 
          <div align="center"><b>显示具体的信息 </b></div>
        </td>
      </tr>
    </table>
    <table width="80%" border="0" align="center">
      <tr> 
        <td height="21">&nbsp; </td>
      </tr>
    </table>
    <% 
    String sql;
    sql="select * from ceshi";
    ResultSet RS ;
    RS=db.Query(sql);
    try{
    while(RS.next()){
    %>
    <table width="80%" border="0" align="center">
      <tr> 
        <td height="21">编号: <%=RS.getString("id")%>
          <br>
          名称:<%=RS.getString("name")%>    
        </td>
     </tr>
    </table>
    <%
    }
    }
    catch(Exception e){
    out.println(e);
    }
    RS.close();
    %>
    </body>
    </html>
    所出现的错误:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    root cause java.lang.NullPointerException
    org.apache.jsp.dbtest_jsp._jspService(dbtest_jsp.java:98)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    note The full stack trace of the root cause is available in the Tomcat logs.哪位高人帮我解决一下,马上揭贴送分
      

  4.   

    1:更改$CATALINA_HOME/conf/server.xml ,在<Context> 里面添加你的DataSource
      <Resource name="jdbc/example"
                   auth="Container"
                   type="javax.sql.DataSource"/>  <ResourceParams name="jdbc/example">
        <parameter>
          <name>factory</name>
          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>    <!-- set you username and password here  -->
        <parameter>
         <name>username</name>
         <value>ceshi</value>
        </parameter>
        <parameter>
         <name>password</name>
         <value></value>
        </parameter>    
        <!-- Class name for  driver -->
        <parameter>
           <name>driverClassName</name>
           <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
        </parameter>
        
        <!-- url -->
        <parameter>
          <name>url</name>
          <value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=eclipse</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 -1 for no limit.  See also the DBCP documentation on this
             and the minEvictableIdleTimeMillis configuration parameter.
             -->
        <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>
            
      </ResourceParams>2:在你的web.xml最上面添加:
      <resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/example</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>3:将你的DBConn该为.
    package database;
      

  5.   

    package database;import org.apache.log4j.Logger;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;public class DBConn {
        //-------------------------------------------------------------------------------------------
        // instance data
        //-------------------------------------------------------------------------------------------
        private static Logger logger = Logger.getLogger(DBConn.class);
        private static Connection connection;
        private static Statement statement;
        private static DataSource ds = null;    public DBConn() {
        }    //-------------------------------------------------------------------------------------------
        // static block to initial datasource
        //-------------------------------------------------------------------------------------------
        static {
            try {
                Context initCtx = new InitialContext();
                Context ctx = (Context) initCtx.lookup("java:comp/env");
                // Look up our data source
                logger.debug("getting DataSource using JNDI:jdbc/example");
                ds = (DataSource) ctx.lookup("jdbc/example");
                logger.debug(".........");
            } catch (NamingException e) {
                logger.error("NamingException:" + e.getMessage());
                e.printStackTrace();
            }
        }    //-------------------------------------------------------------------------------------------
        // public method
        //-------------------------------------------------------------------------------------------
        /**
         * @return Connection
         */
        public Connection getConnection()
                throws SQLException {
            logger.debug("DBConn.getConnection()");
            if (null == ds)
                return null;
            try {
                connection = ds.getConnection();
                logger.debug("successful get connection.");
            } catch (SQLException e) {
                logger.error("SQLException in DBConn.getConnection():" + e.getMessage());
                throw new SQLException("DBConn.getConnection() " + e.getMessage());
            }
            return connection;
        }    public int getCount(String sql) {
            logger.debug("DBConn.getCount()");
            ResultSet rs = null;
            int getCount = 0;
            try {
                statement = getConnection().createStatement();
                rs = statement.executeQuery(sql);
                rs.last();
                getCount = rs.getRow();
            } catch (SQLException ex) {
                logger.error("SQLException in DBConn.getCount():" + ex.getMessage());
                ex.printStackTrace();
            } finally {
                close(rs);
                close(statement);
                close(connection);
            }
            return getCount;
        }    /**
         * @param sql
         * @return
         */
        public ResultSet query(String sql) {
            logger.debug("DBConn.query()");
            ResultSet rs = null;
            try {
                statement = getConnection().createStatement();
                statement.executeQuery(sql);
            } catch (SQLException e) {
                logger.error("SQLException in DBConn.query():" + e.getMessage());
                e.printStackTrace();
            } finally {
                close(statement);
                close(connection);
            }
            return rs;
        }    /**
         * @param sql
         */
        public void update(String sql) {
            logger.debug("DBConn.update()");
            try {
                statement = getConnection().createStatement();
                statement.executeUpdate(sql);
            } catch (SQLException e) {
                logger.error("SQLException in DBConn.update():" + e.getMessage());
                e.printStackTrace();
            } finally {
                close(statement);
                close(connection);
            }
        }    //-------------------------------------------------------------------------------------------
        // private method
        //-------------------------------------------------------------------------------------------
        /**
         * @param o
         */
        private void close(Object o) {
            logger.debug("DBConn.close()");
            if (null == o)
                return;
            try {
                if (o instanceof Statement) {
                    ((Statement) o).close();
                } else if (o instanceof Connection) {
                    ((Connection) o).close();
                } else if (o instanceof ResultSet) {
                    ((ResultSet) o).close();
                } else {
                    logger.debug("NON");
                }
            } catch (SQLException e) {
                logger.error("SQLException in DBConn.close: " + e.getMessage());
                e.printStackTrace();
            }
        }
    }