public final void invoke(final Endpoint endpoint, final Invocation invocation) throws Exception
   {
      try
      {
         // prepare for invocation
         this.init(endpoint, invocation);
         final Object targetBean = invocation.getInvocationContext().getTargetBean();
         final Class<?> implClass = targetBean.getClass();
         final Method seiMethod = invocation.getJavaMethod();
         final Method implMethod = this.getImplMethod(implClass, seiMethod);
         final Object[] args = invocation.getArgs();

         // notify subclasses
         this.onBeforeInvocation(invocation);

         // invoke implementation method
         final Object retObj = implMethod.invoke(targetBean, args);

         // set invocation result
         invocation.setReturnValue(retObj);
      }
      catch (Exception e)
      {
         Loggers.ROOT_LOGGER.methodInvocationFailed(e);
         // propagate exception
         this.handleInvocationException(e);
      }
      finally
      {
         // notify subclasses
         this.onAfterInvocation(invocation);
      }
   }
public final void invoke ( final Endpoint endpoint , final Invocation invocation ) throws Exception { try { this . init ( endpoint , invocation ) ; final Object targetBean = invocation . getInvocationContext ( ) . getTargetBean ( ) ; final Class < ? > implClass = targetBean . getClass ( ) ; final Method seiMethod = invocation . getJavaMethod ( ) ; final Method implMethod = this . getImplMethod ( implClass , seiMethod ) ; final Object [ ] args = invocation . getArgs ( ) ; this . onBeforeInvocation ( invocation ) ; final Object retObj = implMethod . invoke ( targetBean , args ) ; invocation . setReturnValue ( retObj ) ; } catch ( Exception e ) { Loggers . ROOT_LOGGER . methodInvocationFailed ( e ) ; this . handleInvocationException ( e ) ; } finally { this . onAfterInvocation ( invocation ) ; } }
Invokes method on endpoint implementation.

This method does the following steps:

<ul>
<li>lookups endpoint implementation method to be invoked,</li>
<li>
notifies all subclasses about endpoint method is going to be invoked<br/>
(using {@link #onBeforeInvocation(Invocation)} template method),
</li>
<li>endpoint implementation method is invoked,</li>
<li>
notifies all subclasses about endpoint method invocation was completed<br/>
(using {@link #onAfterInvocation(Invocation)} template method).
</li>
</ul>

@param endpoint which method is going to be invoked
@param invocation current invocation
@throws Exception if any error occurs