+ " message does not contain a MethodCall object!");
return null;
}
// get method call information
MethodCall method_call = (MethodCall) body;
String methodName = method_call.getName();
if (trace) {
this.log.trace("full methodName: " + methodName);
}
int idx = methodName.lastIndexOf('.');
String handlerName = methodName.substring(0, idx);
String newMethodName = methodName.substring(idx + 1);
if (trace) {
this.log.trace("handlerName: " + handlerName + " methodName: " + newMethodName);
this.log.trace("Handle: " + methodName);
}
// prepare method call
method_call.setName(newMethodName);
/*
* Invoke it and just return any exception with trace level logging of the exception. The exception semantics of a
* group rpc call are weak as the return value may be a normal return value or the exception thrown.
*/
try {
retval = method_call.invoke(handler);
if (weak != null) {
// wrap the response so that the service name can be accessed during unmarshalling of the response
byte[] retbytes = CoreGroupCommunicationService.this.objectToByteBufferResponseInternal(retval);
retval = new HAServiceResponse(handlerName, retbytes);
}