server.xml
<Context path="/yanhao" docBase="yanhao" reloadable="true" debug="0" crossContext="true">
<Resource name="jdbc/yanhaoDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/yanhaoDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://192.1.1.33:1433;DatabaseName=Great Wall</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>0</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>user</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
</ResourceParams>
</Context>web.xml
<resource-ref>
<description>connectDB test</description>
<res-ref-name>jdbc/yanhaoDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>jsp
System.out.println("hello");
Context initContext = new InitialContext();
System.out.println("hello2");
Context envContext = (Context) initContext.lookup("java:/comp/env/");
System.out.println("hello3");
DataSource ds = (DataSource) envContext.lookup("jdbc/yanhaoDB");
System.out.println("hello4");
if (ds != null){
System.out.println("ds is not null");
}
conn = ds.getConnection();
System.out.println("hello5");
执行到hello3就出错
<Context path="/yanhao" docBase="yanhao" reloadable="true" debug="0" crossContext="true">
<Resource name="jdbc/yanhaoDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/yanhaoDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://192.1.1.33:1433;DatabaseName=Great Wall</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>0</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>user</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
</ResourceParams>
</Context>web.xml
<resource-ref>
<description>connectDB test</description>
<res-ref-name>jdbc/yanhaoDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>jsp
System.out.println("hello");
Context initContext = new InitialContext();
System.out.println("hello2");
Context envContext = (Context) initContext.lookup("java:/comp/env/");
System.out.println("hello3");
DataSource ds = (DataSource) envContext.lookup("jdbc/yanhaoDB");
System.out.println("hello4");
if (ds != null){
System.out.println("ds is not null");
}
conn = ds.getConnection();
System.out.println("hello5");
执行到hello3就出错
这句是不是有问题呀?
Context envContext = (Context) initContext.lookup("java:comp/env");好象应该是这样的。
package cc.tangchao.hq;import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
public static synchronized Connection getConnection() throws Exception
{
try
{
Context initCtx = new javax.naming.InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/hq");
return ds.getConnection();
}
catch(SQLException e)
{
throw e;
}
catch(NamingException e)
{
throw e;
}
}}