Re: PropertyException thrown during SOAP communication

Richard Zowalla <[email protected]>
Newsgroups gmane.comp.java.openejb.user
Message-ID <[email protected]>
Hi,

see
https://github.com/apache/cxf/blob/main/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java#L1105


vs

https://github.com/apache/cxf/blob/cxf-3.5.5/core/src/main/java/org/apache/cxf/common/jaxb/JAXBUtils.java#L1104

I think, it should disappear after upgrading to cxf 4 ;) (wip atm,
waiting for the cxf guys to fix one tck regression).

Gruß
Richard



Am Mittwoch, dem 30.08.2023 um 13:10 +0200 schrieb [email protected]:
> Hi,
> 
> by upgrading to TomEE 9.1.0 we have a lot of message exception stack
> about a missing property: jakarta.xml.bind.PropertyException: name:
> com.sun.xml.bind.characterEscapeHandler value: null. [1]
> 
> By using the debugger I come to following conlusion:
> 
> In the lib org.apache.cxf.common.jaxb (org.apache.tomee:cxf-
> shade:9.1.0) the method
> org.apache.cxf.common.jaxb.DataWriterImpl.createMarshaller will be
> invoked which creates a marshaller from the context which is on my
> machine: jar:file:/opt/tomee/lib/jaxb-runtime-
> 3.0.2.jar!/org/glassfish/jaxb/runtime/v2/runtime/JAXBContextImpl.clas
> s.
> 
> Then the JAXBUtils.setEscapeHandler will be invoked
> databinding.applyEscapeHandler(!noEscape, eh ->
> JAXBUtils.setEscapeHandler(marshaller, eh)); which is in the same
> jar.
> 
> The invoked methodd adds a com.sun.xml package namespace... (which I
> assume is wrong). [2]
> 
> After this in the lib org.glassfish.jaxb:jaxb-runtime:3.0.2 the
> method
> org.glassfish.jaxb.runtime.v2.runtime.MarshallerImpl.setProperty will
> be invoked.
> The constant name is protected static final String ENCODING_HANDLER =
> "org.glassfish.jaxb.characterEscapeHandler";.
> My assumption is that here a match should happen. [3]
> 
> At the end it runs into the method
> jakarta.xml.bind.helpers.AbstractMarshallerImpl.setProperty of
> org.apache.tomee:jakartaee-api:9.1.1. The end of the process the
> PropertyException will be thrown (throw new PropertyException(name,
> value);)
> 
> Can you confirm that this is a bug?
> If the name would be correct a null value is not an correct value, so
> another exception will be thrown where I am not sure if I have any
> influence on it ( databinding.applyEscapeHandler(!noEscape, eh ->
> JAXBUtils.setEscapeHandler(marshaller, eh));).[2][3]
> 
> Thanks,
> Markus
> 
> 
> 
> [1]
> 20-Jul-2023 11:22:16.142 INFO [http-nio-8080-exec-1]
> org.apache.cxf.jaxb.io.DataReaderImpl.createUnmarshaller
> PropertyException setting Marshaller properties
>     jakarta.xml.bind.PropertyException: name:
> org.glassfish.jaxb.ObjectFactory value:
> jakarta.xml.bind.JAXBElementFactory@6bc54824
>         at
> jakarta.xml.bind.helpers.AbstractUnmarshallerImpl.setProperty(Abstrac
> tUnmarshallerImpl.java:327)
>         at
> org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallerImpl.s
> etProperty(UnmarshallerImpl.java:474)
>         at
> org.apache.cxf.jaxb.io.DataReaderImpl.createUnmarshaller(DataReaderIm
> pl.java:123)
>         at
> org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:166)
>         at
> org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessag
> e(DocLiteralInInterceptor.java:109)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:307)
>         at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
> ationObserver.java:121)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(Abstract
> HTTPDestination.java:265)
>         at
> org.apache.openejb.server.cxf.CxfWsContainer.onMessage(CxfWsContainer
> .java:85)
>         at
> org.apache.openejb.server.webservices.WsServlet.service(WsServlet.jav
> a:72)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:223)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53
> )
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:185)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:67)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:185)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> io.smallrye.metrics.jaxrs.JaxRsMetricsServletFilter.doFilter(JaxRsMet
> ricsServletFilter.java:53)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:185)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
> alve.java:197)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
> alve.java:97)
>         at
> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
> torBase.java:542)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
> ava:119)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
> ava:92)
>         at
> org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.inv
> oke(OpenEJBSecurityListener.java:97)
>         at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAcce
> ssLogValve.java:690)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
> ve.java:78)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
> a:356)
>         at
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java
> :399)
>         at
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLig
> ht.java:65)
>         at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(Abstract
> Protocol.java:870)
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpo
> int.java:1762)
>         at
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBas
> e.java:49)
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoo
> lExecutor.java:1191)
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPo
> olExecutor.java:659)
>         at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh
> read.java:61)
>         at java.base/java.lang.Thread.run(Thread.java:833)
> 20-Jul-2023 11:22:16.401 INFO [http-nio-8080-exec-1]
> org.apache.cxf.common.jaxb.JAXBUtils.setEscapeHandler Failed to set
> MinumEscapeHandler to jaxb marshaller
>     jakarta.xml.bind.PropertyException: name:
> com.sun.xml.bind.characterEscapeHandler value: null
>         at
> jakarta.xml.bind.helpers.AbstractMarshallerImpl.setProperty(AbstractM
> arshallerImpl.java:343)
>         at
> org.glassfish.jaxb.runtime.v2.runtime.MarshallerImpl.setProperty(Mars
> hallerImpl.java:499)
>         at
> org.apache.cxf.common.jaxb.JAXBUtils.setEscapeHandler(JAXBUtils.java:
> 1135)
>         at
> org.apache.cxf.jaxb.io.DataWriterImpl.lambda$createMarshaller$0(DataW
> riterImpl.java:140)
>         at
> org.apache.cxf.jaxb.JAXBDataBinding.applyEscapeHandler(JAXBDataBindin
> g.java:279)
>         at
> org.apache.cxf.jaxb.io.DataWriterImpl.createMarshaller(DataWriterImpl
> .java:140)
>         at
> org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:239)
>         at
> org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writePar
> ts(AbstractOutDatabindingInterceptor.java:137)
>         at
> org.apache.cxf.wsdl.interceptors.BareOutInterceptor.handleMessage(Bar
> eOutInterceptor.java:68)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:307)
>         at
> org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(Out
> goingChainInterceptor.java:90)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:307)
>         at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
> ationObserver.java:121)
>         at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(Abstract
> HTTPDestination.java:265)
>         at
> org.apache.openejb.server.cxf.CxfWsContainer.onMessage(CxfWsContainer
> .java:85)
>         at
> org.apache.openejb.server.webservices.WsServlet.service(WsServlet.jav
> a:72)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:223)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53
> )
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:185)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:67)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:185)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> io.smallrye.metrics.jaxrs.JaxRsMetricsServletFilter.doFilter(JaxRsMet
> ricsServletFilter.java:53)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
> icationFilterChain.java:185)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
> ilterChain.java:158)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
> alve.java:197)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
> alve.java:97)
>         at
> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
>         at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica
> torBase.java:542)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
> ava:119)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
> ava:92)
>         at
> org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.inv
> oke(OpenEJBSecurityListener.java:97)
>         at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAcce
> ssLogValve.java:690)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
> ve.java:78)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
> a:356)
>         at
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java
> :399)
>         at
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLig
> ht.java:65)
>         at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(Abstract
> Protocol.java:870)
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpo
> int.java:1762)
>         at
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBas
> e.java:49)
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoo
> lExecutor.java:1191)
>         at
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPo
> olExecutor.java:659)
>         at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskTh
> read.java:61)
>         at java.base/java.lang.Thread.run(Thread.java:833)
> 
> [2]
>    public static void
> org.apache.cxf.common.jaxb.JAXBUtils.setEscapeHandler(Marshaller
> marshaller, Object escapeHandler) {
>         try {
>             String postFix = getPostfix(marshaller.getClass());
>             if (postFix != null && escapeHandler != null) {
>                 marshaller.setProperty("com.sun.xml" + postFix +
> ".bind.characterEscapeHandler", escapeHandler);
>             }
>         } catch (PropertyException e) {
>             LOG.log(Level.INFO, "Failed to set MinumEscapeHandler to
> jaxb marshaller", e);
>         }
>     }
> 
> 
> [3]
>         if( ENCODING_HANDLER.equals(name) ||
> ENCODING_HANDLER2.equals(name)) {
>             if(!(value instanceof CharacterEscapeHandler))
>                 throw new PropertyException(
>                     Messages.MUST_BE_X.format(
>                             name,
>                             CharacterEscapeHandler.class.getName(),
>                             value.getClass().getName() ) );
>             escapeHandler = (CharacterEscapeHandler)value;
>             return;
>         }
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEM587L3ISmryoHZbakep5VqLa2c4FAmTvTHUACgkQkep5VqLa
2c7vahAAmFGfkfTMqu4frzkF+H6T+94h1qo4sUZ6BEBFB8OLpcF2ubFEqBcbwAId
mOg8lMi2+25IU70xgqkXjql5amecW0vEPL+EEs6vcoDh/pBc7ZmEqVI5CudjL0ug
ULlsTGhl+HDDHQjp86QoKUnTVHks1CJ4c2yhhetv/s5hnCjAEen4OYJsPdNEZBKl
M86/Hl3ET4CNVFQSGzvFReLWEscAEEj+pmnlKxQhkXE3ddtAgiPMebYOGJGqIArM
dybzefjJ1i/VstoForqtbNyaVx2LRHNyUP5SqBZcaXq28k9rXU0iWLK8XCHSYL4u
mCzzEb3B9KVZ6qftYxZG7QJM1SY0lzejz7nSiWuAWohJkegkR1RasJ64hDn3EpLE
r/CtRcO0622n0dGcCDL5zqKGXX8+71Cwuw806d6y0EU8WNQkqrAPS6YFsa4JT8Aq
Z3QBTW7QHngc6GYcEtVvi7N3jPl4gCCBVoZ7m4w2PrPaxVqZjEhj7q711hO6+6fR
k1LqHTgnxMlVIRJvpsPVjwN2ZsK9eqS849EUc2KTE6NyjpEeQ38mUBUcUfxOpkPS
ae2egnNl4HylMA2WyguJACIUZhccUhjq09eT0AwH+h+iCKeQEiOF3XTMQ1blHR8Z
jvotoc97gmub/OPwC6A2PX6T6zZ9IC2Jg1FHrghabJa1lDsQ8PI=
=j4P8
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.