Page 1 of 1

PropertyException when using docx4j in wildfly 23

PostPosted: Wed Aug 18, 2021 11:34 pm
by tillomann
Hi,

we are currently running in problems when using docx4j 8.3.1 in a webapp on wildfly 23.0.1 with Oracle JDK 1.8.0_231_b32.

We are getting a PropertyException when docx4j tries to set the NamespacePrefixMapper on the Marshaller instance.

Statcktrace is:

Code: Select all
org.docx4j.jaxb.ri.NamespacePrefixMapper
   at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:725)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:451)
   at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
   at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
   at io.opentracing.contrib.jaxrs2.server.SpanFinishingFilter.doFilter(SpanFinishingFilter.java:52)
   at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
   at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
   at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
   at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
   at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
   at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
   at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
   at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
   at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
   at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
   at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
   at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
   at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59)
   at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
   at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
   at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
   at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
   at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
   at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
   at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
   at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
   at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
   at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
   at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
   at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
   at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
   at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
   at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
   at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
   at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
   at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
   at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
   at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
   at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
   at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
   at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
   at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
   at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
   at java.lang.Thread.run(Thread.java:748)
Caused by: javax.faces.el.EvaluationException: javax.xml.bind.PropertyException: Eigenschaft "com.sun.xml.bind.namespacePrefixMapper" muss eine Instanz vom Typ com.sun.xml.bind.marshaller.NamespacePrefixMapper sein, und nicht org.docx4j.jaxb.ri.NamespacePrefixMapper
   at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:76)
   at com.sun.faces.application.ActionListenerImpl.getNavigationOutcome(ActionListenerImpl.java:82)
   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:71)
   at javax.faces.component.UICommand.broadcast(UICommand.java:222)
   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:847)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1396)
   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:58)
   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:76)
   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:177)
   at javax.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:707)
   ... 54 more
Caused by: javax.xml.bind.PropertyException: Eigenschaft "com.sun.xml.bind.namespacePrefixMapper" muss eine Instanz vom Typ com.sun.xml.bind.marshaller.NamespacePrefixMapper sein, und nicht org.docx4j.jaxb.ri.NamespacePrefixMapper
   at com.sun.xml.bind.v2.runtime.MarshallerImpl.setProperty(MarshallerImpl.java:499)
   at de.dfs.egps.web.beans.AdministrationBean.testDocx4j(AdministrationBean.java:129)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   at java.lang.reflect.Method.invoke(Method.java:498)
   at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:153)
   at com.sun.el.parser.AstValue.invoke(AstValue.java:261)
   at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:237)
   at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
   at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:65)
   at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:66)
   ... 63 more


The docx4j dependencies we use in the project are:

docx4j-JAXB-ReferenceImpl-8.3.1.jar
FastInfoset-1.2.16.jar
istack-commons-runtime-3.0.8.jar
jakarta.activation-api-1.2.1.jar
jakarta.xml.bind-api-2.3.2.jar
jaxb-runtime-2.3.2.jar
stax-ex-1.8.1.jar
txw2-2.3.2.jar
docx4j-core-8.3.1.jar
docx4j-openxml-objects-8.3.1.jar
docx4j-openxml-objects-pml-8.3.1.jar
docx4j-openxml-objects-sml-8.3.1.jar
antlr-2.7.7.jar
antlr-runtime-3.5.2.jar
checker-qual-2.8.1.jar
commons-codec-1.12.jar
commons-compress-1.20.jar
commons-io-2.6.jar
commons-lang3-3.9.jar
error_prone_annotations-2.3.3.jar
fontbox-2.0.19.jar
fop-events-2.5.jar
fop-util-2.5.jar
jaxb-svg11-1.0.2.jar
jcl-over-slf4j-1.7.26.jar
mbassador-1.3.2.jar
qdox-1.12.jar
slf4j-api-1.7.26.jar
stringtemplate-3.2.1.jar
wmf2svg-0.9.8.jar
xalan-interpretive-8.0.0.jar
xalan-metainf-8.0.0.jar
xalan-serializer-8.0.0.jar
xmlgraphics-commons-2.3.jar

I read the comment in NamespacePrefixMapperUtils.java which says that an upgrade of ServiceMix should solve the problem but we are on wildfly.

Any help is appreciated!

Re: PropertyException when using docx4j in wildfly 23

PostPosted: Thu Aug 19, 2021 6:26 am
by jason
Have you seen jboss-f29/eap-7-2-7-3-and-wildfly-20-0-1-t2948.html

(Does Wildfly 23.0.1 still use jboss-deployment-structure.xml?)

Re: PropertyException when using docx4j in wildfly 23

PostPosted: Thu Aug 19, 2021 6:40 pm
by tillomann
Thanks for the link. That fixed it!

Yes, wildfly still uses jboss-deployment-structure.xml and that was the missing piece.

Re: PropertyException when using docx4j in wildfly 23

PostPosted: Thu Aug 19, 2021 7:56 pm
by jason
Excellent. Thanks for the data point :-)