让Tomcat和MySQL在NetBeans中相互通信

时间:2010-10-11 10:21:07

标签: mysql tomcat tomcat6

重建了我的Windows 7 PC后,我试图让Tomcat在NetBeans下运行以连接到MySQL。

我相信MySQL没问题,因为各种工具都能正确检索数据。但是当我的Java Web应用程序从NetBeans运行时,Tomcat会显示主页,但随后会出现Java空指针错误。日志告诉我这与从数据库中检索用户数据有关。所以我假设这两个系统组件无法相互通信。但为什么呢?

我的web应用程序使用的NetBeans库中有mySQLConnector。我已将MySQL Connector放在Tomcat的config文件夹中,MySQL Connector也在PC的类路径中。 Web应用程序中的context.xml文件设置为使用MySQL中的root用户,并设置MySQL中的所有相关权限。

但我一无所获!虽然我在另一台PC上使用相同的工具,但它们没问题。

有什么想法吗?有没有我错过的东西?

运行应用程序时的Apache日志是:

11-Oct-2010 11:42:15 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet IndexServlet threw exception

java.lang.NullPointerException
        at visualRSS.index.Index_Servlet.doGet(Index_Servlet.java:91)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
        at java.lang.Thread.run(Thread.java:619)

visualRSS.index.Index_Servlet.doGet(Index_Servlet.java:91)中的行是指

User user = User_DB.get(userNo);
activeUser = Active_User_Writer.write(request, user, Valid.FALSE);

在我的代码中从数据库中获取用户。但没有...我认为这是一个配置问题,因为此代码适用于另一台PC。

从数据库中获取用户的代码如下:

// Gets a User.
public static User get(String userNo) {
    ConnectionPool_DB pool = ConnectionPool_DB.getInstance();
    Connection connection = pool.getConnection();
    PreparedStatement ps = null;
    ResultSet rs = null;

    String query = ("SELECT * " +
                    "FROM User " +
                    "WHERE UserNo = ?;");

    try {
        System.out.println("Debug userNo: " + userNo);
        ps = connection.prepareStatement(query);
        ps.setString(1, userNo);
        rs = ps.executeQuery();
        System.out.println("Debug query: " + query);
        if (rs.next()) {                
            User u = new User();
            u.setUserNo(rs.getString("UserNo"));
            ...
            System.out.println("Debug: get User");
            return u;
        }
        else {
            System.out.println("Debug: error");
            return null;
        }
    }
    catch(Exception ex) {
        logger.error("Error getting User " + userNo + "\n", ex);
        return null;
    }
    finally {
        Database_Utils.closeResultSet(rs);
        Database_Utils.closePreparedStatement(ps);
        pool.freeConnection(connection);
    }
}

由于

摩根先生。

0 个答案:

没有答案