LINUX.ORG.RU

Обработка JPS/Servlet ошибок движком LINUX.ORG.RU, вернее ее отсутствие


0

0

Нажал в неподтвержденных новостях на размещенной только что своей новости на [Правка] и получилслед страничку с ошибкой:

http://www.linux.org.ru/edit.jsp?msgid=2476028
>>>>>>>>>>>>
Not authorized
К сожалению, произошла исключительная ситуация при генерации страницы. Если вы считаете, что она возникла по причине нашей ошибки, пожалуйста сообщите нам о ошибке и условиях ее возникновения. Не забудьте также указать полный URL странички, вызвавшей исключение.
java.lang.IllegalAccessException: Not authorized
at org.apache.jsp.edit_jsp._jspService(edit_jsp.java:58)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil terChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:188)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.ja va:738)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil terChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:10 8)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:89 5)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:6 89)
at java.lang.Thread.run(Thread.java:595)


http://www.linux.org.ru/

http://www.linux.org.ru/edit.jsp?msgid=2476028";
<<<<<<<<<<<<

Но суть моего обращения не в этой ошибке конкретно. Суть в том, что я за последние 4 года не раз встречал на ЛОРе подобные картины. И каждый раз при виде ява стека мне в голову прходят одни и те же мысли: ну как можно так на яве программировать сайты, что при непредвиденных проблемах пользователи должны видеть его внутренноси. Как и что там называется, как и где лежит, какие технологии при этом используются и т.д. Как-будто это кривая пхп-шная поделка, а не ява сайт.
К тому же просьба прислать отчет об ошибке похожа на албанский вирус который сам не может ничего сделать. Даже емейл отосласть.

В общем мне лично стыдно за наш ЛОР и поэтому при всей его очевидности я все же рискну предложить для вас свободные девелоперы ЛОРа след решение: показывать всем всегда заранее подготовленную старницу ошибки. Фиксированную или интеллектуальную, анализирующую где она произошла и с каким Exception как вам угодно. Например самый простой вариант:

/error.jsp
>>>>>>>>>>>
<%@ page isErrorPage="true" contentType="text/html;charset=utf-8" pageEncoding="UTF-8" session="false" %>
<%@ page import="ru.org.linux.MailErrors" %>
<%
if(exception == null) return;
MailErrors.sendError(exception,application,request);
%>
<html>
<head><title>Произошла непредвиденая ошибка</title></head>
<body><b>Произошла непредвиденая ошибка. Администраторы получили об этом сигнал и если посчитают нужным исправят ее.</b></body>
</html>
<<<<<<<<<<<

При этом и стек показываться не будет и письма уйдут вам с отчетом автоматически.
Чтобы это заработало для всех jsp-шек и сервлетов вашего java web-модуля в его WEB-INF/web.xml нужно добавить:

/WEB-INF/web.xml
>>>>>>>>>>>
<web-app character-encoding='UTF-8'>
<context-param servlet.errorPage='/error.jsp'/>
<error-page error-code='500' location='/error.cgi'/>
.....
</web-app
<<<<<<<<<<<
если нужно могу прислать код ru.org.linux.MailErrors.sendError(exception,application,request)

но он просто отсылает письмо на нужный вам адрес(а) в которое инклюдит стек ошибки явы который вы показываете сейчас пользователю в текст письма
....
StringWriter exceptionStackTrace = new StringWriter();
e.printStackTrace(new PrintWriter(exceptionStackTrace));
exceptionStackTrace......
....
и за одно инклюдит в письмо всё что хранится в application и request все объекты и переменные web-окружения (сессии, CGI,...).

Искренне надеюсь, что вам это поможет сделать ЛОР еще удобнее и главное профессиональнее.


В принципе ошибка как я понимаю уже была показанна в обертке, т.к. имеет ЛОРовский header и footer, но зачем ее вообще показывать пользователям и просить их слать кому-то емейл?

sergom
() автор топика
Ответ на: комментарий от JB

Да это все равно. Этот топик не про содержание конкретной ошибки а про то как ведет себя ЛОР при таких ошибкак в общем.

sergom
() автор топика
Ответ на: комментарий от sergom

Движок ЛОРа - то ещё проприетарное г. Но зато выглядит не так, как всякие гламурные пыхапыбебе.

anonymous
()
Ответ на: комментарий от maxcom

ну добавте редактирование втечение 20-30 минут. Это очень сильно повысит грамотность новостей ЛОРа )))

phasma ★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.