cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Cyrille Le Clerc (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CXF-2541) JMX Per Operation ResponseTime not collected for JAX-RS services
Date Mon, 21 Dec 2009 23:53:18 GMT

    [ https://issues.apache.org/jira/browse/CXF-2541?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12793426#action_12793426
] 

Cyrille Le Clerc commented on CXF-2541:
---------------------------------------

I am not sure but I think the "org.apache.cxf.resource.operation.name" property should be
set on the exchange rather than on the message in o.a.c.jaxrs.client.AbstractClient.setPlainOperationNameProperty()
because o.a.c.management.interceptor.AbstractMessageResponseTimeInterceptor.increaseCounter()
is looking on the exchange (see below).

Shall I commit the change ?

Cyrille


{code:title=AbstractClient.java : proposed version working on the exchange}
public class AbstractClient implements Client {
    ...
    protected void setPlainOperationNameProperty(Message outMessage, String name) {
        outMessage.getExchange().put("org.apache.cxf.resource.operation.name", name);
    }
}
{code}


{code:title=AbstractClient.java : current version working on the outMessage}
public class AbstractClient implements Client {
    ...
    protected void setPlainOperationNameProperty(Message outMessage, String name) {
        outMessage.put("org.apache.cxf.resource.operation.name", name);
    }
}
{code}


{code:title=AbstractMessageResponseTimeInterceptor.java : current version working on the exchange}
public abstract class AbstractMessageResponseTimeInterceptor extends AbstractPhaseInterceptor<Message>
{
    ...
    private void increaseCounter(Exchange ex, MessageHandlingTimeRecorder mhtr) {
        ...
            if (operationName == null) {
                Object nameProperty = ex.get("org.apache.cxf.resource.operation.name");
                if (nameProperty != null) {
                    operationName = "\"" + nameProperty.toString() + "\"";
                }
            }
        ...
    }

> JMX Per Operation ResponseTime not collected for JAX-RS services
> ----------------------------------------------------------------
>
>                 Key: CXF-2541
>                 URL: https://issues.apache.org/jira/browse/CXF-2541
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.2.3
>            Reporter: Cyrille Le Clerc
>             Fix For: 2.2.6, 2.3
>
>         Attachments: CXF-2541-jaxrs-client.patch, cxf-2541.patch, usage-of-OperationInfo-and-OperationResourceInfo.log
>
>
> The JMX ResponseTimeFeature does not work on a per operation basis for JAXRS calls but
works on a per Service basis.
> My understanding is that it works on a per service basis because both o.a.c.jaxrs.JAXRSServiceImpl
and o.a.c.service.ServiceImpl implement the same o.a.c.service.Service interface and are indexed
in the Exchange map at the o.a.c.service.Service entry.
> On the other hand, it does not work on the per operation basis because o.a.c.jaxrs.model.OperationResourceInfo
and o.a.c.service.model.OperationInfo do not implement a shared interface. Thus, the ResponseTimeFeature
is specific to SOAP operations and can not handle JAXRS 'operations'.
> A fix could be to introduce a shared Operation interface, to make both OperationResourceInfo
and OperationInfo implement this interface and to us the interface as the key for the Exchange
map instead of the current OperationResourceInfo.class and OperationInfo.class.
> There are 30 "put()" & "get()" calls on OperationInfo.class. and 8 "put()" &
"get()" calls on OperationResourceInfo.class.
> I would be very pleased to propose a patch if the project is interested.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message