public Object invokeStep ( String remoteStepInvokerId , String stepTokenId , List < String > params ) throws Exception { try { //call the remote method Object [ ] args = { remoteStepInvokerId , stepTokenId , ChorusContext . getContext ( ) . getSnapshot ( ) , params } ; String [ ] signature = { "java.lang.String" , "java.lang.String" , "java.util.Map" , "java.util.List" } ; log . debug ( String . format ( "About to invoke step (%s) on MBean (%s)" , remoteStepInvokerId , objectName ) ) ; JmxStepResult r = ( JmxStepResult ) mBeanServerConnection . invoke ( objectName , "invokeStep" , args , signature ) ; //update the local context with any changes made remotely Map newContextState = r . getChorusContext ( ) ; ChorusContext . resetContext ( newContextState ) ; //return the result which the remote step method returned return r . getResult ( ) ; } catch ( MBeanException e ) { throw e . getTargetException ( ) ; } }
Calls the invoke Step method on the remote MBean . The current ChorusContext will be serialized as part of this and marshalled to the remote bean .