2013-08-23 37 views
2

我的问题与[Link]非常相似:(Why Servlet.service() for servlet [XYZ] in context with path [/ABC] threw exception)但我认为它没有解决。SEVERE:servlet [SqlGatewayServlet]在路径[/ DEV-JDBC]上下文中引发异常

这是一个简单的SQL网关应用程序,在我的个人电脑本地主机上它工作正常。然而,当我上传war文件到服务器时,它抛出该异常

org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [SqlGatewayServlet] in context with path [/DEV-JDBC] threw exception java.lang.NullPointerException at sql.SqlGatewayServlet.do

java.lang.NullPointerException sql.SqlGatewayServlet.doPost(SqlGatewayServlet.java:34)

线:34 Statement statement = connection.createStatement();

SqlGatewayServlet

public class SqlGatewayServlet extends HttpServlet { 

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    String sqlStatement = request.getParameter("sqlStatement"); 
    String sqlResult = ""; 



    try{ 
     ConnectionPool pool = ConnectionPool.getInstance(); 
     Connection connection = pool.getConnection(); 

     // create a statement 
     Statement statement = connection.createStatement(); 

     // parse the SQL string 
     sqlStatement = sqlStatement.trim(); 
     if(sqlStatement.length() > 6){ 

      String sqlType = sqlStatement.substring(0, 6); 
      if(sqlType.equalsIgnoreCase("select")){ 

       // create the HTML for the result set 
       ResultSet resultSet = statement.executeQuery(sqlStatement); 
       sqlResult = SQLUtil.getHtmlTable(resultSet); 
       resultSet.close(); 

      }else{ 

       int i = statement.executeUpdate(sqlStatement); 
       // a DDL statement 
       if(i == 0){ 
        sqlResult = "The statement executed successfully"; 
       }else{ 
        sqlResult = "The statment executed sucessfully.<br>" 
          + i + "row(s) affected."; 
       }     
      } 
     statement.close(); 
     connection.close(); 

     } 

    }catch(SQLException e){ 
     sqlResult = "Error executing the SQL statement: <br>" 
       + e.getMessage(); 

    } 
    HttpSession session = request.getSession(); 
    session.setAttribute("sqlResult", sqlResult); 
    session.setAttribute("sqlStatement", sqlStatement); 

    String url = "/index.jsp"; 

    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); 

    dispatcher.forward(request, response); 
} 

} 

的context.xml

<Context path="/DEV-JDBC"> 

<Resource name="jdbc/uplink_project" auth="Container" 
    maxActive="100" maxIdle="30" maxWait="10000" 
    username="xxxxx" password="xxxxxx" 
    driverClassName="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost:2082/uplink_project?autoReconnect=true" 
    logAbandoned="true" removeAbandoned="true" 
    removeAbandonedTimeout="60" type="javax.sql.DataSource" /> 

我的设置有问题吗?或者它的服务器问题?请让我知道你需要什么其他信息。

预先感谢

回答

1

如果在下面的语句一个空指针异常:

那么就意味着您的连接对象为空。

当您从ConnectionPool类初始化连接对象时。因此,请确保其getConnection方法返回有效的连接对象:

ConnectionPool pool = ConnectionPool.getInstance(); 
    Connection connection = pool.getConnection(); 

您需要调试ConnectionPool类。

+0

谢谢你,事实证明我的JDBC URL是错误的.... –

2

五月的问题是在方法getConnection()ConnectionPool becase的connectionnull

+0

谢谢,你解答了我的问题。 Juned首先得到了我的追求,所以我投了你的票。谢谢 –

+1

事实上,Juned的答案更多*新*。 –

相关问题