@@ -113,20 +113,29 @@ private void initializeFunctionInstanceInjector() {
113
113
}
114
114
115
115
private FunctionExecutionMiddleware getFunctionExecutionMiddleWare () {
116
- FunctionExecutionMiddleware functionExecutionMiddleware = new FunctionExecutionMiddleware (
117
- JavaMethodExecutors .createJavaMethodExecutor (this .classLoaderProvider .createClassLoader ()));
116
+ FunctionExecutionMiddleware functionExecutionMiddleware = new FunctionExecutionMiddleware (JavaMethodExecutor .getInstance ());
118
117
WorkerLogManager .getSystemLogger ().info ("Load last middleware: FunctionExecutionMiddleware" );
119
118
return functionExecutionMiddleware ;
120
119
}
121
120
122
121
public Optional <TypedData > invokeMethod (String id , InvocationRequest request , List <ParameterBinding > outputs )
123
122
throws Exception {
124
123
ExecutionContextDataSource executionContextDataSource = buildExecutionContext (id , request );
125
- this . invocationChainFactory . create (). doNext (executionContextDataSource );
124
+ invoke (executionContextDataSource );
126
125
outputs .addAll (executionContextDataSource .getDataStore ().getOutputParameterBindings (true ));
127
126
return executionContextDataSource .getDataStore ().getDataTargetTypedValue (BindingDataStore .RETURN_NAME );
128
127
}
129
128
129
+ private void invoke (ExecutionContextDataSource executionContextDataSource ) throws Exception {
130
+ ClassLoader prevContextClassLoader = Thread .currentThread ().getContextClassLoader ();
131
+ try {
132
+ Thread .currentThread ().setContextClassLoader (classLoaderProvider .createClassLoader ());
133
+ this .invocationChainFactory .create ().doNext (executionContextDataSource );
134
+ } finally {
135
+ Thread .currentThread ().setContextClassLoader (prevContextClassLoader );
136
+ }
137
+ }
138
+
130
139
private ExecutionContextDataSource buildExecutionContext (String id , InvocationRequest request )
131
140
throws NoSuchMethodException {
132
141
ImmutablePair <String , FunctionDefinition > methodEntry = this .methods .get (id );
0 commit comments