Hi Gabo thanks for the update, see comments inline...
On Wed, Oct 13, 2010 at 6:03 AM, Gabo Manuel <[email protected]>wrote: > Hi Sergey, > > Thanks!!! Just to note: > > 1. OperationInfo opInfo = ex.get(OperationInfo.class); works for SOAP > 2. Object nameProperty = ex.get("org.apache.cxf.resource.operation.name"); > works for ReST > > Just curious though. I just noticed that if the method is mapped to the > root path (for ReST), e. g. : > > @WebService(name="FooService", > targetNamespace="http://foo.com/") > @SOAPBinding(use=Use.LITERAL, style=Style.RPC) > @Consumes("*/xml") > @Produces("text/xml") > @Path("/Foo") > public interface FooService{ > > @GET > @Path("/") > @WebMethod > @WebResult(name="bar") > public Bar getBar( > @QueryParam("id") > @WebParam(name="id") > long id > ); > > @GET > @Path("/baz/") > @WebMethod > @WebResult(name="baz") > public Baz getBaz( > @QueryParam("id") > @WebParam(name="id") > long id > ); > } > > Invoking getBar would result to operationName of "getBar", while invoking > getBaz would result to "FooServiceImpl#getBaz". Im assuming this is not > encountered in SOAP transactions because I am already able to retrieve the > method name using OperationInfo class. > > It has to be fixed a bit. "FooServiceImpl#getBaz" should only be reported instead of "getBaz" if we have multiple JAXRS root resources used by a single jaxrs:service thanks, Sergey > Again, my thanks for the info. > > Gabo > > > On 10/12/2010 9:35 PM, Sergey Beryozkin wrote: > >> Hi Gabo >> >> On Tue, Oct 12, 2010 at 11:01 AM, Gabo Manuel<[email protected] >> >wrote: >> >> Hi All, >>> >>> I am already able to retrieve the endpoint using the following: >>> >>> Exchange exchange = ...;// retrieved from message >>> exchange.getEndpoint().getEndpointInfo().getName() >>> >>> I was wondering if it is possible to retrieve the actual service method >>> invoked. Am doing all this at a registered out interceptor at >>> Phase.MARSHAL_ENDING. >>> >>> A code like this one should give you the name, will work for JAXWS& >>> JAXRS >>> >> : >> >> OperationInfo opInfo = ex.get(OperationInfo.class); >> String operationName = opInfo == null ? null : >> opInfo.getName().getLocalPart(); >> >> if (operationName == null) { >> Object nameProperty = ex.get(" >> org.apache.cxf.resource.operation.name >> "); >> if (nameProperty != null) { >> operationName = nameProperty.toString(); >> } >> } >> >> cheers, Sergey >> >> >> Thanks in advance. >>> >>> Gabo >>> >>>
