Baptiste AIGLIN created CXF-8595:
------------------------------------

             Summary: Incorrect resource name used to log message content for 
rest messages 
                 Key: CXF-8595
                 URL: https://issues.apache.org/jira/browse/CXF-8595
             Project: CXF
          Issue Type: Bug
          Components: logging
    Affects Versions: 3.4.4
            Reporter: Baptiste AIGLIN


Hello. 

The context is message logs in case of rest services exposed when we have 
multiple resources exposed on the same JAX-RS server.

What we see is the current logging name for message logs look like:
<org.apache.cxf.services.ResourceClass.REQ_IN>
<org.apache.cxf.services.ResourceClass.RESP_OUT>
 
However it is not always the correct resource class name that is logged, the 
request path does not match the resource path but on another resource exposed 
on the server.
 
After investigation I could find that the name comes from 
org.apache.cxf.jaxrs.JAXRSServiceImpl#getName used to create the endpoint info 
org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean#createEndpointInfo
 
Where we can see:
{{ public QName getName() {}}
{{ if (serviceName != null) {}}
{{ return serviceName;}}
{{ }}}
{{ if (address == null && !classResourceInfos.isEmpty()) {}}
{{ Class<?> primaryClass = classResourceInfos.get(0).getServiceClass();}}
{{ String ns = 
PackageUtils.getNamespace(PackageUtils.getPackageName(primaryClass));}}
{{ return new QName(ns, primaryClass.getSimpleName());}}
{{ }}}
{{ return new QName(address, "WebClient");}}
{{ }}}

 

And we can see the first resource found is used as name. but this does not 
always reflect the class targetted. 

This name is used to log the message there 
org.apache.cxf.ext.logging.event.DefaultLogEventMapper#setEpInfo

{{ event.setPortTypeName(endpoint.getName());}}

But while debugging I could see that the message exchange actually contains the 
current class resource definition at the key "root.resource.class" set by the 
JAXRSInInterceptor, and this would actually set the correct class name.

Thanks and best regards.

Baptiste.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to