![](/img/trans.png)
[英]SEVERE: Servlet.service() for servlet [package] in context with path [/portal] threw exception java.lang.NullPointerException
[英]SEVERE: Servlet.service() for servlet [SqlGatewayServlet] in context with path [/DEV-JDBC] threw exception
我的问题与[Link]非常相似:( 为什么在路径[/ ABC]的上下文中,用于Servlet [XYZ]的Servlet.service()抛出异常 ),但我认为这没有解决。
这是一个简单的SQL网关应用程序,在我的个人计算机localhost上运行正常。 但是,当我将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" />
我的设置有问题吗? 还是服务器问题? 请让我知道您还需要什么其他信息。
预先感谢
可能问题出在getConnection()
方法上的ConnectionPool
类中,如果connection
为null
。
如果以下语句中存在空指针异常:
Statement statement = connection.createStatement();
则表示您的连接对象为null。
当您从ConnectionPool类初始化连接对象时。 因此,请确保其getConnection方法返回有效的连接对象:
ConnectionPool pool = ConnectionPool.getInstance();
Connection connection = pool.getConnection();
您需要调试ConnectionPool类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.