В минувший понедельник 4 февраля агентство NASA направило мощнейший информационный сигнал в виде знаменитой песни The Beatles "Через Вселенную" в цифровом формате МР3 к Полярной звезде со скоростью почти 300 тысяч километров в секунду.
Уже через 5 часов, когда сигнал миновал орбиту последней планеты Солнечной системы и вышел за ее пределы популярный формат сжатия аудио с потерями стал самым растространенным фрматом сжатия аудио данных в Солнечной системе и прилежащем к нему пространстве.
Нажал в неподтвержденных новостях на размещенной только что своей новости на [Правка] и получилслед страничку с ошибкой:
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)
Но суть моего обращения не в этой ошибке конкретно. Суть в том, что я за последние 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,...).
Искренне надеюсь, что вам это поможет сделать ЛОР еще удобнее и главное профессиональнее.
Как говорят у нас в Одессе: "Вы будете смеяться но.." парламент сегодня распускают. Интересное совпадение.
Президент Италии Джорджо Наполитано вечером во вторник объявит спикерам обеих палат парламента о его роспуске, сообщает РИА "Новости" со ссылкой на официальное сообщение президентского дворца.
Причиной отставки стало то, что итальянский сенат 24 января проголосовал против доверия возглавляемому премьер-министром Романо Проди правительства.
Подробности