@ Override public Object invoke ( Exchange exchange , Object o ) { BindingOperationInfo bop = exchange . getBindingOperationInfo ( ) ; MethodDispatcher md = ( MethodDispatcher ) exchange . getService ( ) . get ( MethodDispatcher . class . getName ( ) ) ; List < Object > params = null ; if ( o instanceof List ) { params = CastUtils . cast ( ( List < ? > ) o ) ; } else if ( o != null ) { params = new MessageContentsList ( o ) ; } final Object tb = ( factory == null ) ? targetBean : this . getServiceObject ( exchange ) ; final Method method = ( bop == null ) ? null : md . getMethod ( bop ) ; if ( method == null ) { throw Messages . MESSAGES . missingBindingOpeartionAndDispatchedMethod ( ) ; } //performance optimization, adjustMethodAndParams currently looks for @UseAsyncMethod (which is expensive) and only performs actions if it's found final Method fm = checkForUseAsyncMethod ? adjustMethodAndParams ( md . getMethod ( bop ) , exchange , params , tb . getClass ( ) ) : method ; return invoke ( exchange , tb , fm , params ) ; }
This overrides org . apache . cxf . jaxws . AbstractInvoker in order for using the JBoss AS target bean and simplifying the business method matching