I’m not sure if this will always work, but here is some sample code that I put into a Handler to log the web service method name that is being called. I wanted to be able to track each method, and see which ones were getting use.
This web service was running on IBM WebSphere 6.1.
public boolean handleMessage(LogicalMessageContext context) { String webMethodOperationName = null; try { Field mepCtxField = context.getMessage().getClass().getDeclaredField("mepCtx"); mepCtxField.setAccessible(true); Object mepCtx = mepCtxField.get(context.getMessage()); Field requestMCField = mepCtx.getClass().getDeclaredField("requestMC"); requestMCField.setAccessible(true); Object requestMC = requestMCField.get(mepCtx); Field operationDescField = requestMC.getClass().getDeclaredField("operationDesc"); operationDescField.setAccessible(true); Object operationDesc = operationDescField.get(requestMC); Field webMethodOperationNameField = operationDesc.getClass().getDeclaredField("webMethodOperationName"); webMethodOperationNameField.setAccessible(true); webMethodOperationName = (String) webMethodOperationNameField.get(operationDesc); } catch (Exception e) { log.warn("Cannot find method name of operation."); } System.out.println(webMethodOperationName); return true; }