Парсер PDF не работает в производственной среде - PullRequest
0 голосов
/ 29 января 2019

У меня есть приложение, которое генерирует некоторые PDF-файлы.Это работает в системах подготовки производства, но не в системе производства.Мы развертываем в weblogic 10.3.6, обе среды должны иметь одинаковую конфигурацию

Мы получили разрешение на развертывание веб-приложения после того, как все функциональные тесты были выполнены в непроизводительной среде.Проблема в том, что окончательный PDF-файл, который должно создать приложение, не работает в рабочей среде (но в тестовой среде - да).Мы используем:

<dependency>
            <groupId>org.xhtmlrenderer</groupId>
            <artifactId>core-renderer</artifactId>
            <version>R8</version>
            <scope>compile</scope>
        </dependency>


public static void crearPDFHTML(String htmlPlantilla, OutputStream pdf)
    throws Exception {
        try
        {
            ITextRenderer renderer = new ITextRenderer();
            //String plantillaLimpia = makeTidy(htmlPlantilla);
            LOG.info("Antes de limpiar caracteres especiales");
            String limpio = quitarCaracteresEspeciales(htmlPlantilla);
            LOG.info("Antes de poner el documento en el render");
            LOG.info(limpio);
            renderer.setDocumentFromString(limpio);
            LOG.info("antes del layout");
            renderer.layout();//HERE FAILS IN PRODUCTIVE ENVIRONEMENT
            LOG.info("antes de crear PDF");
            renderer.createPDF(pdf);
            LOG.info("PDF creado con éxito");

        }catch(Throwable e)
    {
        e.printStackTrace();
        throw new Exception(e);
    }
}

Если веб-приложение отлично работает в предварительной среде, оно должно работать точно так же в профессиональной среде и генерирует PDF.

трассировка стека:

java.lang.Exception: java.lang.NullPointerException 
        at es.msssi.gepsa.utils.PDFUtils.crearPDFHTML(PDFUtils.java:47) 
        at es.msssi.gepsa.utils.PlantillaPSA.rellenarPlantilla(PlantillaPSA.java:456) 
        at es.msssi.gepsa.web.controller.DocumentoPSAController.generaDocumentoPSA(DocumentoPSAController.java:269) 
        at es.msssi.gepsa.web.controller.PsaController.generaDocumentoPSA(PsaController.java:454) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781) 
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721) 
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) 
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:821) 
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) 
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) 
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:89) 
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) 
        at es.msssi.common.seguridad.GenericExisteAtributoFilter.doFilter(GenericExisteAtributoFilter.java:158) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) 
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) 
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) 
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:61) 
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:163) 
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714) 
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182) 
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) 
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:221) 
    Caused by: java.lang.NullPointerException 
        at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:459) 
        at weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLConnection.java:37) 
        at java.net.URL.openStream(URL.java:1017) 
        at org.xhtmlrenderer.swing.NaiveUserAgent.resolveAndOpenStream(NaiveUserAgent.java:122) 
        at org.xhtmlrenderer.pdf.ITextUserAgent.getImageResource(ITextUserAgent.java:54) 
        at org.xhtmlrenderer.pdf.ITextReplacedElementFactory.createReplacedElement(ITextReplacedElementFactory.java:57) 
        at org.xhtmlrenderer.render.BlockBox.calcDimensions(BlockBox.java:674) 
        at org.xhtmlrenderer.render.BlockBox.calcDimensions(BlockBox.java:628) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:763) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:732) 
        at org.xhtmlrenderer.layout.InlineBoxing.layoutInlineBlockContent(InlineBoxing.java:393) 
        at org.xhtmlrenderer.layout.InlineBoxing.layoutContent(InlineBoxing.java:290) 
        at org.xhtmlrenderer.render.BlockBox.layoutInlineChildren(BlockBox.java:938) 
        at org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:919) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:802) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:732) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutBlockChild0(BlockBoxing.java:293) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutBlockChild(BlockBoxing.java:271) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:89) 
        at org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:922) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:802) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:732) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutBlockChild0(BlockBoxing.java:293) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutBlockChild(BlockBoxing.java:271) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:89) 
        at org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:922) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:802) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:732) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutBlockChild0(BlockBoxing.java:293) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutBlockChild(BlockBoxing.java:271) 
        at org.xhtmlrenderer.layout.BlockBoxing.layoutContent(BlockBoxing.java:89) 
        at org.xhtmlrenderer.render.BlockBox.layoutChildren(BlockBox.java:922) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:802) 
        at org.xhtmlrenderer.render.BlockBox.layout(BlockBox.java:732) 
        at org.xhtmlrenderer.pdf.ITextRenderer.layout(ITextRenderer.java:209) 
        at es.msssi.gepsa.utils.PDFUtils.crearPDFHTML(PDFUtils.java:37) 
        at es.msssi.gepsa.utils.PlantillaPSA.rellenarPlantilla(PlantillaPSA.java:456) 
        at es.msssi.gepsa.web.controller.DocumentoPSAController.generaDocumentoPSA(DocumentoPSAController.java:269) 
        at es.msssi.gepsa.web.controller.PsaController.generaDocumentoPSA(PsaController.java:454) 
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781) 
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721) 
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) 
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) 
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) 
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) 
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) 
        at es.msssi.common.seguridad.GenericExisteAtributoFilter.doFilter(GenericExisteAtributoFilter.java:158) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) 
        at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119) 
        at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324) 
        at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460) 
        at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103) 
        at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171) 
        at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) 
        at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:163) 
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) 
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3748) 
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714) 
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283) 
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182) 
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) 
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:263) 
        ... 1 more

1 Ответ

0 голосов
/ 13 февраля 2019

Ну, наконец, проблема была решена.Это довольно странная ситуация, и я не думаю, что это кому-нибудь поможет, но ....

Проблема в том, что в DES и PRE (непроизводительные среды) вы можете делать изображения, которые нужны PDFиспользуя два URL (http или https) и хорошо работает с обоими.Но в PRO конфигурация безопасности не позволяет Itext запрашивать изображение, используя http.Он должен использовать https

Так что это все, просто измените конфигурацию URL, PDF работает, и все люди снова счастливы.

Спасибо за ответы и терпение

...