我的TOMCAT中的Server.xml配置
<Context path="/testWebService" docBase="D:\jakarta-tomcat-5.0.30\jakarta-tomcat-5.0.30\webapps\testWebService" debug="0" reloadable="true" crossContext="true">
<Resource name="jdbc/mysqlserver" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysqlserver">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter><parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter><parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs</value>
</parameter><parameter>
<name>username</name>
<value>sa</value>
</parameter><parameter>
<name>password</name>
<value></value>
</parameter><parameter>
<name>maxActive</name>
<value>50</value>
</parameter><parameter>
<name>maxIdle</name>
<value>20</value>
</parameter><parameter>
<name>maxWait</name>
<value>10000</value>
</parameter></ResourceParams>
</Context>

解决方案 »

  1.   

    我的Java类
    package com.connect;import java.sql.Connection;import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.sql.DataSource;public class ConnectDataSource { public static Connection getConnection() throws Exception{
    Connection con = null;

    try{
    InitialContext initialContext = new InitialContext();
    System.out.println("run here~~~~~~~~~");
    //Context context = (Context)initialContext.lookup("java:comp/env");
    //System.out.println("run here11111~~~~~~~~~");
    DataSource dataSource = (DataSource)initialContext.lookup("java:comp/env/jdbc/mysqlserver");
    System.out.println("run here22222~~~~~~~~~");
    con = dataSource.getConnection();
    System.out.println("run here33333~~~~~~~~~");
    }catch(Exception e){
    System.out.println("连接出错");
    }

    return con;
    }
    第二个类
    package com.method;import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;import com.connect.ConnectDataSource;
    public class Method { public String[] findJobs() {
    String[] result = null;
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
    conn = ConnectDataSource.getConnection();
    String findJobs = "select * from jobs";
    ps = conn.prepareStatement(findJobs);
    rs = ps.executeQuery();
    int length = rs.getRow();
    result = new String[length-1];
    if (rs.next()) {
    for(int i=0;i<result.length;i++){
       result[i] = rs.getString(2);
    }
    }
    }
    catch (Exception e) {
    result = null;
    e.printStackTrace();
    }finally {
    try {
    if (ps != null) {
    ps.close();
    }
    if (conn != null) {
    conn.close();
    }
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    return result;
    }

    public static void main(String[] args){
    Method m = new Method();
    System.out.println(m.findJobs());
    }
    }
      

  2.   

    运行程序后的错误
    run here~~~~~~~~~
    连接出错
    java.lang.NullPointerException
    at com.method.Method.findJobs(Method.java:20)
    at com.method.Method.main(Method.java:51)
    null
    求各位大哥帮帮忙!!小弟很急!!在此跪谢了,在线等!!
      

  3.   

    看你的输出情况肯定是这一句出错了:DataSource dataSource = (DataSource)initialContext.lookup("java:comp/env/jdbc/mysqlserver");但是看了一下你的配置,好像没错啊。你在System.out.println("连接出错");这句之前加个输出错误信息看看。
      

  4.   

    你的JNDI配置有个小问题, 所以你可以将server.xml配置改成如下:
    <Resource name="mysqlserver" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="mysqlserver">或将程序改为如下:
    DataSource dataSource = (DataSource)initialContext.lookup("java:comp/env/jdbc/jdbc/mysqlserver");