You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2016/12/22 15:47:50 UTC
svn commit: r1775681 - in
/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container:
dgen/classload/ jd/classload/ jd/user/error/classload/
Author: degenaro
Date: Thu Dec 22 15:47:50 2016
New Revision: 1775681
URL: http://svn.apache.org/viewvc?rev=1775681&view=rev
Log:
UIMA-5227 employ thread-context class loader for new instances when JobDriver is running on user's classpath
Modified:
uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/dgen/classload/ProxyDeployableGeneration.java
uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverErrorHandler.java
uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/user/error/classload/ProxyUserErrorStringify.java
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/dgen/classload/ProxyDeployableGeneration.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/dgen/classload/ProxyDeployableGeneration.java?rev=1775681&r1=1775680&r2=1775681&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/dgen/classload/ProxyDeployableGeneration.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/dgen/classload/ProxyDeployableGeneration.java Thu Dec 22 15:47:50 2016
@@ -111,7 +111,8 @@ public class ProxyDeployableGeneration {
show("ccOverrides", ccOverrides);
Class<?> clazz = urlClassLoader.loadClass("org.apache.uima.ducc.user.dgen.iface.DeployableGeneration");
Constructor<?> constructor = clazz.getConstructor();
- Object instance = constructor.newInstance();
+ Object[] c_args = new Object[] { };
+ Object instance = ContextSwitch.construct(urlClassLoader, constructor, c_args);
Class<?>[] parameterTypes = {
String.class, // directory
String.class, // id
@@ -182,7 +183,8 @@ public class ProxyDeployableGeneration {
show("referenceByName", referenceByName);
Class<?> clazz = urlClassLoader.loadClass("org.apache.uima.ducc.user.dgen.iface.DeployableGeneration");
Constructor<?> constructor = clazz.getConstructor();
- Object instance = constructor.newInstance();
+ Object[] c_args = new Object[] { };
+ Object instance = ContextSwitch.construct(urlClassLoader, constructor, c_args);
Class<?>[] parameterTypes = {
String.class, // directory
String.class, // id
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverErrorHandler.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverErrorHandler.java?rev=1775681&r1=1775680&r2=1775681&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverErrorHandler.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverErrorHandler.java Thu Dec 22 15:47:50 2016
@@ -18,6 +18,7 @@
*/
package org.apache.uima.ducc.container.jd.classload;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.net.URLClassLoader;
@@ -144,16 +145,18 @@ public class ProxyJobDriverErrorHandler
String initializationData = getErrorHandlerInitArgs();
//
classLoader = createClassLoader(userClasspath);
- Class<?> classAnchor = classLoader.loadClass(className);
- objectInstance = classAnchor.newInstance();
+ Class<?> clazz = classLoader.loadClass(className);
+ Constructor<?> constructor = clazz.getConstructor();
+ Object[] c_args = new Object[] { };
+ objectInstance = ContextSwitch.construct(classLoader, constructor, c_args);
//
String methodNameInitialize = "initialize";
- Method methodInstanceInitialize = classAnchor.getMethod(methodNameInitialize, String.class);
+ Method methodInstanceInitialize = clazz.getMethod(methodNameInitialize, String.class);
Object[] plist = new Object[1];
plist[0] = initializationData;
ContextSwitch.call(classLoader, methodInstanceInitialize, objectInstance, plist);
//
- Method[] classMethods = classAnchor.getMethods();
+ Method[] classMethods = clazz.getMethods();
for(Method method : classMethods) {
if(method.getName().equals("handle")) {
Type[] types = method.getParameterTypes();
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/user/error/classload/ProxyUserErrorStringify.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/user/error/classload/ProxyUserErrorStringify.java?rev=1775681&r1=1775680&r2=1775681&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/user/error/classload/ProxyUserErrorStringify.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/user/error/classload/ProxyUserErrorStringify.java Thu Dec 22 15:47:50 2016
@@ -59,7 +59,8 @@ public class ProxyUserErrorStringify {
try {
Class<?> clazz = urlClassLoader.loadClass("org.apache.uima.ducc.user.error.iface.Stringify");
Constructor<?> constructor = clazz.getConstructor();
- Object instance = constructor.newInstance();
+ Object[] c_args = new Object[] { };
+ Object instance = ContextSwitch.construct(urlClassLoader, constructor, c_args);
Class<?>[] parameterTypes = {
Object.class, // userException
};