BIRT Report Viewer в Tomcat работает с отключенной панелью инструментов, но не работает с ней. Есть идеи, что происходит? - PullRequest
1 голос
/ 05 мая 2020

У нас есть веб-приложение Tomcat с отчетами BIRT. Навскидку, я не знаю, какую версию BIRT мы используем, но проблема возникает в одной установке (одной из многих), которая находится в Tomcat 7.0.93, работающей на 64-битной Java 8, на IBM Midrange box.

В этой одной установке, если панель инструментов средства просмотра BIRT отключена, отчет работает нормально.

Но если эта панель инструментов включена, мы получаем исключение с нулевым указателем, создание этой трассировки стека:

java.lang.NullPointerException
   at org.eclipse.birt.report.engine.api.impl.RenderTask.initRenderTask(RenderTask.java:153)
   at org.eclipse.birt.report.engine.api.impl.RenderTask.(RenderTask.java:115)
   at org.eclipse.birt.report.engine.api.impl.RenderTask.(RenderTask.java:98)
   at org.eclipse.birt.report.engine.api.impl.ReportEngineHelper.createRenderTask(ReportEngineHelper.java:502)
   at org.eclipse.birt.report.engine.api.impl.ReportEngine.createRenderTask(ReportEngine.java:515)
   at org.eclipse.birt.report.service.ReportEngineService.createRenderTask(ReportEngineService.java:1635)
   at org.eclipse.birt.report.service.ReportEngineService.renderReport(ReportEngineService.java:1537)
   at org.eclipse.birt.report.service.BirtViewerReportService.getPage(BirtViewerReportService.java:204)
   at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.doExecution(AbstractGetPageActionHandler.java:237)
   at org.eclipse.birt.report.service.actionhandler.AbstractGetPageActionHandler.__execute(AbstractGetPageActionHandler.java:104)
   at org.eclipse.birt.report.service.actionhandler.AbstractBaseActionHandler.execute(AbstractBaseActionHandler.java:90)
   at org.eclipse.birt.report.soapengine.processor.AbstractBaseDocumentProcessor.__executeAction(AbstractBaseDocumentProcessor.java:47)
   at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.executeAction(AbstractBaseComponentProcessor.java:143)
   at org.eclipse.birt.report.soapengine.processor.BirtDocumentProcessor.handleGetPage(BirtDocumentProcessor.java:87)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
   at java.lang.reflect.Method.invoke(Method.java:508)
   at org.eclipse.birt.report.soapengine.processor.AbstractBaseComponentProcessor.process(AbstractBaseComponentProcessor.java:112)
   at org.eclipse.birt.report.soapengine.endpoint.BirtSoapBindingImpl.getUpdatedObjects(BirtSoapBindingImpl.java:66)
   at sun.reflect.GeneratedMethodAccessor71.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
   at java.lang.reflect.Method.invoke(Method.java:508)
   at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
   at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
   at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:250)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
   at org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:136)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at com.touchtone.wintouch.WintouchFilter.doFilter(WintouchFilter.java:126)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at com.touchtone.wintouch.security.ContentSecurityPolicyFilter.doFilter(ContentSecurityPolicyFilter.java:186)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137)
   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:319)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1160)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
   at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
   at java.lang.Thread.run(Thread.java:811)

Этого не происходит ни на одной из наших других установок, это поставило нашу команду webapp в тупик.

Другая потенциально важная информация: 1. Это не отображается чтобы поместить что-нибудь в любой из журналов Tomcat. 2. Ни диспетчер Tomcat, ни выполнение WRKJVMJOB в задании сервера Tomcat не показывают никаких признаков того, что заданию не хватает места в куче.

1 Ответ

0 голосов
/ 12 мая 2020

Перехватите запросы и сравните их, чтобы определить, есть ли разница в заголовках, параметрах URL и т. Д. c. например, с помощью Fiddler (или какого-либо другого перехватывающего прокси, журналов отладки TLS и т. д. c.).

Java 14 представила приятную возможность сделать исключение NullPointerException более подробным, но вам нужно включить его при запуске с помощью -XX:+ShowCodeDetailsInExceptionMessages.

Если ничего не помогает, запустите Tomcat с включенным сокетом удаленной отладки и используйте, например, Eclipse, чтобы установить точку останова для любого метода или исключения, которое вы хотите проверить.

Удачи!

...