Использование PrintWriter и OutputStream

Я создаю проект со стойками, и у меня проблема с использованием Jasper IReports. Я хочу экспортировать некоторую информацию в файл PDF, и я продолжаю получать java.lang.IllegalStateException: getOutputStream() уже был вызван... Исключение из-за открытия ServletOutputStream в моем коде, когда страница уже открывает PrintWriter.

Код находится в модели (поэтому он не в jsp, а в java-файле), как следует:

    public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
    ServletOutputStream out = null;
    try {

        JasperDesign jasperDesign = JRXmlLoader.load(path);
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection);
        res.setContentType("application/pdf");
        res.setContentLength(bytes.length);
        out = res.getOutputStream();
        out.write(bytes, 0, bytes.length);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        out.flush();
        out.close();
    }

Я проверил соединение, путь и HttpServletResponse, и все работает нормально.

Я очень новичок в Jasper Reports, а также в кодировании материалов в PDF, так что вы можете правильно предположить, что у меня есть минимальное представление о том, что я здесь делаю, и что, очевидно, мой код копируется/вставляется откуда-то через сеть. .

Я пытался использовать PrintWriter вместо OutputStream, преобразовывая байты в строку и используя метод PrintWriter.append(String) (хотя это не String, а CharSequence), но он не извлекает данные в PDF.

Я также пытался получить PrintWriter, закрыть его, чтобы открыть OutputStream (не сработало) или сбросить его (ни то, ни другое).

Любая помощь с решением для использования любого выхода, который может отображать данные в формате PDF, была бы отличной. Большое спасибо!


person Random    schedule 15.01.2010    source источник
comment
кто открывает PrintWriter?   -  person Bozho    schedule 15.01.2010
comment
Файл JSP пытается открыть PrintWriter при запуске. Поэтому, когда я отправляю элемент управления в файл jsp через ActionMapping.findforward, JSP открывает PrintWriter и начинает показывать JSP. Я решил это, никуда не идя с моим findforward. Таким образом, нет файла JSP для загрузки (загружать нечего), а код PDF (через OutputStream) переходит на страницу без загрузки файла jsp и, следовательно, без загрузки PrintWriter.   -  person Random    schedule 18.01.2010


Ответы (4)


Было бы полезно увидеть трассировку стека.

Однако вы можете сначала попробовать выполнить проверку работоспособности: измените этот код, чтобы просто записать статическую строку (hello world) в ServletOutputStream и установить тип содержимого в text/html. Поскольку это должно работать нормально:

public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
ServletOutputStream out = null;
try {
    byte[] bytes = "hello world".getBytes();
    res.setContentType("text/html");
    res.setContentLength(bytes.length);
    out = res.getOutputStream();
    out.write(bytes, 0, bytes.length);
} catch (Exception e) {
    e.printStackTrace();
} finally {
    out.flush();
    out.close();
}

ХТН

person simonlord    schedule 15.01.2010
comment
Действительно, этот код работает отлично. Я этого не понимаю, так как думал, что у вас не может быть одновременно открытых OutputStream и PrintWriter. Дело в том, что, установив тип содержимого в text/html, он каким-то образом переопределяет PrintWriter? - person Random; 15.01.2010
comment
Нет, я думаю, что может быть открыт только один: http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletResponse.html#getOutputStream() Вы пытаетесь вызвать getWriter() после записи в выходной поток? Если да, то поэтому вы получаете исключение нелегального состояния. - person simonlord; 15.01.2010
comment
Я думаю, что теперь понимаю, поскольку outputStream записывает pdf, программа все еще заканчивает переход к actionmapping.findforward (к моему jsp). И jsp пишет с помощью PrintWriter. Я думаю, что есть проблема, и почему теперь я могу видеть свой PDF-файл и все равно поднимать исключение. Я мог бы попытаться никуда не идти с картой действий, чтобы не было исключений для использования PrintWriter. - person Random; 15.01.2010
comment
И вот он, это моя трассировка последнего стека: 15-ene-2010 14:09:48 org.apache.struts.action.ActionMapping findForward ADVERTENCIA: Не удалось найти «вперед». Исключения нет; но мне интересно, как это программирование вписывается в передовую практику... (как я полагаю, это просто не так) - person Random; 15.01.2010

Некоторые идеи:

  • PrintWriter не будет работать, если вы работаете с двоичным потоком (PDF является двоичным)
  • Недопустимое состояние может возникнуть при тайм-ауте или отключении на стороне клиента. Трассировка пакетов процесса расскажет вам о многом (даже если вы плохо их читаете). Посмотрите на WireShark или на то, что доступно для вашей платформы. Стоит потратить время, чтобы хотя бы немного узнать о том, что происходит на уровне проводов.
  • Убедитесь, что данные, которые вы получаете из созданного отчета, на самом деле в формате pdf. Запишите его в файл и попытайтесь открыть.
  • В некоторых ситуациях требуется, чтобы вы установили заголовок длины http перед записью в поток, иначе они сдаются, когда данные начинают отображаться. Здесь может понадобиться.
person Jim Rush    schedule 15.01.2010
comment
Спасибо! Я сделал простой Java-проект (не веб-приложение) и попытался создать PDF-файл, мой jrxml, похоже, работает. Буду искать, что происходит на уровне проводов. Мой отчет довольно короткий (около 200 символов), я не думаю, что URL становится слишком большим для него... - person Random; 15.01.2010

Как именно вызывается код? Судя по трассировке стека, вы запускаете класс Java с методом handle, используя скриптлеты внутри файла JSP (точнее, inicio2.jsp). После того, как класс Java запишет отчет в OutputStream, файл JSP продолжит вывод остатка самого файла (включая пробелы!), который неявно вызовет getWriter() для записи его в ответ. Именно это вызовет IllegalStateException, с которым вы столкнулись сейчас, когда getOutputStream() уже вызывался ранее в классе Java.

Хорошо, что код Java помещен в класс Java, но это не означает, что вы все еще можете использовать JSP для его вызова. JSP не должен содержать ни одной строки кода Java. Сам JSP является частью технологии просмотра выходных данных. Чтобы все это исправить, просто создайте класс действий Struts (или HttpServlet), который вы можете вызвать с помощью HTML <form> или <a>.

person BalusC    schedule 15.01.2010
comment
Код вызывается в файле Java в моем собственном классе, который вызывается в моем собственном действии, и JSP вызывает его через struct-config-xml, как и любой другой MVC, использующий struts. Проблема более или менее решена (см. комментарии simonlord): код пытался написать .pdf с использованием OutputStream на странице, в то время как в конце этого кода он пытался перенаправить на inicio2.jsp после записи .pdf. Конечно, jsp использует PrintWriter, и в этом проблема. Я решил это, никуда не перенаправляя код (в findforward). Спасибо, в любом случае! :) - person Random; 18.01.2010

Собственный ответ:

Я указал путь к jrxml, который фактически подключается к базе данных и получает некоторые реальные данные, и внезапно это сработало, PDF-файл открылся в Mozilla, но исключение продолжает происходить. Я не знаю, как я могу выбросить и исключение (я отладил, и исключение происходит в том же месте) и увидеть PDF.

Так что я могу только продолжать искать то, что на самом деле здесь происходит. Я отвечу всем, что найду (вероятно, в понедельник).

Спасибо simonlord и Джиму Рашу за вашу помощь! :)

Редактировать: Кстати, вот трассировка стека (она на испанском языке, если нужно, я переведу все, что вы не понимаете): Редактировать еще раз: кажется, я не копировал «1» 15 января 2010 г. .. ... может создать путаницу в отношении следа из вставки от 5 января. Исправлено.

15-ene-2010 13:47:03 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: El Servlet.service() para servlet jsp lanzó una excepción
java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta
    at org.apache.catalina.connector.Response.getWriter(Response.java:607)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196)
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:171)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76)
    at org.apache.jsp.pages.inicio2_jsp._jspService(inicio2_jsp.java:300)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    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:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141)
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92)
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    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:172)
    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:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
15-ene-2010 13:47:03 org.apache.struts.chain.commands.AbstractExceptionHandler execute
ADVERTENCIA: Unhandled exception
org.apache.jasper.JasperException: getOutputStream() ya ha sido llamado para esta respuesta
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367)
    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:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141)
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92)
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    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:172)
    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:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
15-ene-2010 13:47:03 org.apache.struts.chain.commands.ExceptionCatcher postprocess
ADVERTENCIA: Exception from exceptionCommand 'servlet-exception'
org.apache.jasper.JasperException: getOutputStream() ya ha sido llamado para esta respuesta
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367)
    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:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141)
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92)
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    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:172)
    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:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
15-ene-2010 13:47:03 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet action lanzó excepción
java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta
    at org.apache.catalina.connector.Response.getWriter(Response.java:607)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196)
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:171)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76)
    at org.apache.jsp.pages.inicio2_jsp._jspService(inicio2_jsp.java:300)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    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:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497)
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141)
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92)
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    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:172)
    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:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)
person Random    schedule 15.01.2010