@@ -180,9 +180,6 @@ public DynamicJvmServiceInvoker(ClassLoader clientClassloader,
180180 @ Override
181181 protected Object doInvoke (MethodInvocation invocation ) throws Throwable {
182182 try {
183- Method targetMethod = invocation .getMethod ();
184- Object [] targetArguments = invocation .getArguments ();
185-
186183 SofaLogger
187184 .debug (">> Start in Cross App JVM service invoke, the service interface is - "
188185 + getInterfaceType ());
@@ -191,16 +188,8 @@ protected Object doInvoke(MethodInvocation invocation) throws Throwable {
191188 ReplayContext .setPlaceHolder ();
192189 }
193190
194- // check whether skip serialize or not
195- if (!serialize || SofaRuntimeProperties .isSkipJvmSerialize (clientClassloader .get ())) {
196- ClassLoader tcl = Thread .currentThread ().getContextClassLoader ();
197- try {
198- pushThreadContextClassLoader (getServiceClassLoader ());
199- return targetMethod .invoke (targetService , targetArguments );
200- } finally {
201- pushThreadContextClassLoader (tcl );
202- }
203- }
191+ Method targetMethod = invocation .getMethod ();
192+ Object [] targetArguments = invocation .getArguments ();
204193
205194 if (TOSTRING_METHOD .equalsIgnoreCase (targetMethod .getName ())
206195 && targetMethod .getParameterTypes ().length == 0 ) {
@@ -214,14 +203,24 @@ protected Object doInvoke(MethodInvocation invocation) throws Throwable {
214203 }
215204
216205 Class [] oldArgumentTypes = targetMethod .getParameterTypes ();
217-
218- final Object [] arguments = (Object []) hessianTransport (targetArguments , null );
219- final Class [] argumentTypes = (Class []) hessianTransport (oldArgumentTypes , null );
220-
221- Method transformMethod = getTargetMethod (targetMethod , argumentTypes );
222- Object retVal = transformMethod .invoke (targetService , arguments );
223-
224- return hessianTransport (retVal , getClientClassloader ());
206+ Method transformMethod ;
207+ // check whether skip serialize or not
208+ if (!serialize || SofaRuntimeProperties .isSkipJvmSerialize (clientClassloader .get ())) {
209+ ClassLoader tcl = Thread .currentThread ().getContextClassLoader ();
210+ try {
211+ pushThreadContextClassLoader (getServiceClassLoader ());
212+ transformMethod = getTargetMethod (targetMethod , oldArgumentTypes );
213+ return transformMethod .invoke (targetService , targetArguments );
214+ } finally {
215+ pushThreadContextClassLoader (tcl );
216+ }
217+ } else {
218+ Object [] arguments = (Object []) hessianTransport (targetArguments , null );
219+ Class [] argumentTypes = (Class []) hessianTransport (oldArgumentTypes , null );
220+ transformMethod = getTargetMethod (targetMethod , argumentTypes );
221+ Object retVal = transformMethod .invoke (targetService , arguments );
222+ return hessianTransport (retVal , getClientClassloader ());
223+ }
225224 } catch (InvocationTargetException ex ) {
226225 throw ex .getTargetException ();
227226 } finally {
0 commit comments