Исключение PostgreSQL: «Произошла ошибка ввода-вывода при отправке на серверную часть» ⇐ JAVA
-
Anonymous
Исключение PostgreSQL: «Произошла ошибка ввода-вывода при отправке на серверную часть»
Я тестирую код, который обрабатывает регистрацию на веб-сайте. Java-код выглядит следующим образом (отрывок):
if (request.getParameter("method").equals("checkEmail")){ Строка email= request.getParameter("электронная почта"); ResultSet rs = null; ReadedStatement ps = db.prepareStatement(query); ps.setString(1, электронная почта); rs = ps.executeQuery(); если (rs.next ()) { //электронная почта уже присутствует в базе данных } еще { //продолжаем регистрацию..... В большинстве случаев процесс выполняется без проблем, но периодически возникает проблема, когда он завершается сбоем, поскольку соединение с базой данных закрывается. Каждый раз, когда он терпит неудачу, он терпит неудачу в одном и том же месте - при выполнении подготовленного оператора, приведенного выше (который, очевидно, проверяет, находится ли отправляемое электронное письмо уже в базе данных).
Версия Postgres — 8.1.23
Любая помощь или предложения приветствуются. Stacktrace выглядит следующим образом (EDIT: иногда Stacktrace говорит, что это вызвано закрытием потока, а иногда и закрытием сокета, как показано ниже):
13:53:00,973 ОШИБКА Регистрация: 334 — org.postgresql.util.PSQLException: произошла ошибка ввода-вывода при отправке на серверную часть. в org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:283) в org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479 в org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367) в org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271) в Registration.doPost(Registration.java:113) в javax.servlet.http.HttpServlet.service(HttpServlet.java:637) в javax.servlet.http.HttpServlet.service(HttpServlet.java:717) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) в org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567) в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) в org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) в org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) в org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) в org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) в org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) в org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) в java.lang.Thread.run(Thread.java:595) Вызвано: java.net.SocketException: сокет закрыт в java.net.SocketInputStream.socketRead0 (собственный метод) в java.net.SocketInputStream.read(SocketInputStream.java:129) в org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135) в org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104) в org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73) в org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259) в org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1620) в org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) ... еще 22
Я тестирую код, который обрабатывает регистрацию на веб-сайте. Java-код выглядит следующим образом (отрывок):
if (request.getParameter("method").equals("checkEmail")){ Строка email= request.getParameter("электронная почта"); ResultSet rs = null; ReadedStatement ps = db.prepareStatement(query); ps.setString(1, электронная почта); rs = ps.executeQuery(); если (rs.next ()) { //электронная почта уже присутствует в базе данных } еще { //продолжаем регистрацию..... В большинстве случаев процесс выполняется без проблем, но периодически возникает проблема, когда он завершается сбоем, поскольку соединение с базой данных закрывается. Каждый раз, когда он терпит неудачу, он терпит неудачу в одном и том же месте - при выполнении подготовленного оператора, приведенного выше (который, очевидно, проверяет, находится ли отправляемое электронное письмо уже в базе данных).
Версия Postgres — 8.1.23
Любая помощь или предложения приветствуются. Stacktrace выглядит следующим образом (EDIT: иногда Stacktrace говорит, что это вызвано закрытием потока, а иногда и закрытием сокета, как показано ниже):
13:53:00,973 ОШИБКА Регистрация: 334 — org.postgresql.util.PSQLException: произошла ошибка ввода-вывода при отправке на серверную часть. в org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:283) в org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479 в org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367) в org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271) в Registration.doPost(Registration.java:113) в javax.servlet.http.HttpServlet.service(HttpServlet.java:637) в javax.servlet.http.HttpServlet.service(HttpServlet.java:717) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) в org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) в org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:567) в org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) в org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) в org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) в org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) в org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) в org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) в org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) в java.lang.Thread.run(Thread.java:595) Вызвано: java.net.SocketException: сокет закрыт в java.net.SocketInputStream.socketRead0 (собственный метод) в java.net.SocketInputStream.read(SocketInputStream.java:129) в org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135) в org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104) в org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73) в org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259) в org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1620) в org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) ... еще 22
Мобильная версия