Мы используем Docx4J версии 8 для преобразования файла docx в PDF с использованием библиотеки Eclipselink MOXy. Версия Java, которую мы используем, — Java 21. Она отлично работает на сервере Tomcat 10, но не работает на сервере Websphere Liberty 24. Мы получаем следующее исключение, связанное с контекстом JAXB.
Let us know what we are doing wrong. I know that this is do with the configuration on Liberty server. Please if anybody can help with that, it will be of great help.
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1104) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) at [internal classes] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) at [internal classes] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) at [internal classes] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) at [internal classes] at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:124) at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:117) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) at [internal classes] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) at [internal classes] Caused by: java.lang.VerifyError: Bad type on operand stack Exception Details: Location: org/eclipse/persistence/jaxb/compiler/Generator.generateSchemaFiles(Ljava/lang/String;Ljava/util/Map;)Ljava/util/Map; @89: invokevirtual Reason: Type 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject' (current frame, stack[0]) is not assignable to 'org/eclipse/persistence/core/sessions/CoreProject' Current Frame: bci: @89 flags: { } locals: { 'org/eclipse/persistence/jaxb/compiler/Generator', 'java/lang/String', 'java/util/Map', 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'org/eclipse/persistence/oxm/XMLContext', 'org/eclipse/persistence/oxm/XMLMarshaller' } stack: { 'org/eclipse/persistence/internal/oxm/schema/SchemaModelProject', 'java/lang/Class' } Bytecode: 0000000: 2a2c 2ab4 002c b700 c22a b400 312a b400 0000010: 2cb6 0093 2ab4 002c b600 972a b400 2cb6 0000020: 009a 2ab4 002c b600 9d2a b400 2cb6 00a0 0000030: 2ab4 002c b600 8db6 00b7 bb00 c659 b700 0000040: c84e bb00 c959 2dc0 00cb b700 cd3a 0419 0000050: 04b6 00d0 3a05 2d12 d4b6 00d6 c000 dc3a 0000060: 062a b400 31b6 00ba 3a07 1907 b900 de01 0000070: 003a 09a7 005e 1909 b900 e401 00c0 00d4 0000080: 3a08 bb00 ea59 bb00 ec59 2bb8 00ee b700 0000090: f212 f4b6 00f6 1908 b600 fab6 00f6 b600 00000a0: feb7 0101 3a0a 1908 b601 023a 0b19 0b13 00000b0: 0106 1301 08b6 010a 1906 190b b901 1002 00000c0: 0019 0519 08bb 0114 5919 0ab7 0116 b601 00000d0: 1919 09b9 011f 0100 9aff 9e2a b400 31b6 00000e0: 0122 b0 Stackmap Table: full_frame(@118,{Object[#1],Object[#107],Object[#81],Object[#215],Object[#201],Object[#282],Object[#220],Object[#223],Top,Object[#229]},{}) same_frame_extended(@209)
at org.eclipse.persistence.jaxb.JAXBContext$ContextPathInput.createContextState(JAXBContext.java:994) at org.eclipse.persistence.jaxb.JAXBContext$ContextPathInput.createContextState(JAXBContext.java:922) at org.eclipse.persistence.jaxb.JAXBContext.(JAXBContext.java:205) at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:131) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:217) at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:175) at javax.xml.bind.ContextFinder.find(ContextFinder.java:336) at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:508) at org.docx4j.jaxb.Context.(Context.java:120) at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:814) at org.docx4j.openpackaging.io3.Load3.get(Load3.java:146) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:561) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:410) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:376) at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:341) at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:180) at com.expleo.rtftopdf.ApplicationController.docxToPDF(ApplicationController.java:494) at com.expleo.rtftopdf.ApplicationController.replaceTextDocx(ApplicationController.java:473) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:262) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ... 26 more
at org.eclipse.persistence.jaxb.JAXBContext$ContextPathInput.createContextState(JAXBContext.java:994) ~[org.eclipse.persistence.moxy-2.7.6.jar:na] at org.eclipse.persistence.jaxb.JAXBContext$ContextPathInput.createContextState(JAXBContext.java:922) ~[org.eclipse.persistence.moxy-2.7.6.jar:na] at org.eclipse.persistence.jaxb.JAXBContext.(JAXBContext.java:205) ~[org.eclipse.persistence.moxy-2.7.6.jar:na] at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:131) ~[org.eclipse.persistence.moxy-2.7.6.jar:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:217) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:175) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.ContextFinder.find(ContextFinder.java:336) ~[jaxb-api-2.3.1.jar:2.3.0] at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:508) ~[jaxb-api-2.3.1.jar:2.3.0] at org.docx4j.jaxb.Context.(Context.java:120) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.contenttype.ContentTypeManager.parseContentTypesFile(ContentTypeManager.java:814) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.io3.Load3.get(Load3.java:146) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:561) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:410) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:376) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:341) ~[docx4j-core-8.0.0.jar:na] at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:180) ~[docx4j-core-8.0.0.jar:na] at com.expleo.rtftopdf.ApplicationController.docxToPDF(ApplicationController.java:494) ~[classes/:na] at com.expleo.rtftopdf.ApplicationController.replaceTextDocx(ApplicationController.java:473) ~[classes/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:262) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.1.2.jar:6.1.2] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.1.2.jar:6.1.2] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527) ~[io.openliberty.jakarta.servlet.6.0_1.0.86.jar:na] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.1.2.jar:6.1.2] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614) ~[io.openliberty.jakarta.servlet.6.0_1.0.86.jar:na] at [internal classes] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.2.jar:6.1.2] at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) ~[na:na] at [internal classes] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.2.jar:6.1.2] at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) ~[na:na] at [internal classes] at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:124) ~[spring-boot-3.2.1.jar:3.2.1] at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:99) ~[spring-boot-3.2.1.jar:3.2.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:117) ~[spring-boot-3.2.1.jar:3.2.1] at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) ~[na:na] at [internal classes] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.1.2.jar:6.1.2] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.2.jar:6.1.2] at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203) ~[na:na] at [internal classes] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na] [/code] Это зависимости, добавленные для Docx4J в pom.xml [code] javax.xml.bind jaxb-api 2.3.1
[/code] Это фрагмент кода, проблема возникает при загрузке файла в WordprocessingLMPackage [code] WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(templateInputStream);
String regex=".*(calibri|cour|arial|times|comic|georgia|impact|LSANS|pala|tahoma|trebuc|verdana|symbol|webdings|wingding).*"; PhysicalFonts.setRegex(regex); MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); FileOutputStream os = new FileOutputStream(outputFile); FOSettings foSettings = Docx4J.createFOSettings(); foSettings.setWmlPackage(wordMLPackage); foSettings.setImageDirPath("C:\\upload\\img"); Docx4J.toFO(foSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL); [/code] Мы также упомянули настройку JVM, сообщающую серверу Liberty, какую фабрику контекста использовать во время выполнения. [code]-Djavax.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory [/code] Let us know what we are doing wrong. I know that this is do with the configuration on Liberty server. Please if anybody can help with that, it will be of great help.