Перестроив мой компьютер с Windows 7, я пытаюсь запустить Tomcat под NetBeans для подключения к MySQL.
Я считаю, что с MySQL все в порядке, потому что различные инструменты корректно получают данные.Но когда мое веб-приложение на Java запускается из NetBeans, Tomcat показывает домашнюю страницу, но затем выдает ошибку нулевого указателя Java.Журналы говорят мне, что это связано с получением пользовательских данных из базы данных.Поэтому я предполагаю, что два компонента системы не могут общаться друг с другом.Но почему?
У меня есть mySQLConnector в библиотеке NetBeans, которую использует мое веб-приложение.Я поместил MySQL Connector в папку конфигурации Tomcat, MySQL Connector также находится в пути к классам ПК.Файл context.xml в веб-приложении настроен на использование пользователя root в MySQL, а все соответствующие полномочия в MySQL установлены.
Но я ничего не получаю!Хотя у меня есть те же инструменты на другом ПК, и они в порядке.
Есть идеи?Есть ли что-то, что я пропустил?
Журнал 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);
В моем коде получить пользователя из БД.Но ничего ... Я предполагаю, что это проблема конфигурации, поскольку этот код работает на другом ПК.
Код для получения пользователя из базы данных выглядит следующим образом:
// 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);
}
}
Спасибо
Мистер Морган.