<!-- 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>
ds = (DataSource)ntx.lookup("jdbc/sa");在你的配置文件中就没有见 comp/env ,,,,,
你是凭什么调用呀!
或者你在其他的地方做了说明!
<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"> </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.哪位高人帮我解决一下,马上揭贴送分
<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;
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();
}
}
}