diff --git a/pom.xml b/pom.xml index 197774bf..f8d78884 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ 2.4.4.Final 5.4.1.Final 2.25.1 - 2.8.10 + 2.9.10 2.3.1 5.2.10.Final 2.6.4 diff --git a/tools/loader/pom.xml b/tools/loader/pom.xml index 1e3ea047..924ccbc8 100644 --- a/tools/loader/pom.xml +++ b/tools/loader/pom.xml @@ -13,4 +13,12 @@ KumuluzEE custom class loader implementation kumuluzee-loader + + + + javax.enterprise + cdi-api + provided + + \ No newline at end of file diff --git a/tools/loader/src/main/java/com/kumuluz/ee/loader/EeClassLoader.java b/tools/loader/src/main/java/com/kumuluz/ee/loader/EeClassLoader.java index a9fea26d..5650bada 100644 --- a/tools/loader/src/main/java/com/kumuluz/ee/loader/EeClassLoader.java +++ b/tools/loader/src/main/java/com/kumuluz/ee/loader/EeClassLoader.java @@ -24,6 +24,8 @@ import com.kumuluz.ee.loader.jar.JarEntryInfo; import com.kumuluz.ee.loader.jar.JarFileInfo; +import javax.enterprise.inject.spi.BeforeShutdown; +import javax.enterprise.inject.spi.CDI; import java.io.*; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -35,7 +37,6 @@ import java.util.*; import java.util.jar.JarEntry; import java.util.jar.JarFile; -import java.util.logging.Logger; /** * @author Benjamin Kastelic @@ -135,6 +136,8 @@ public EeClassLoader(ClassLoader parent) { shutdown(); } catch (InterruptedException e) { debug("Failed to shutdown and clean up gracefully."); + } catch (NoClassDefFoundError e) { + } })); @@ -308,12 +311,18 @@ private Class findJarClass(String className) throws EeClassLoaderException { } /** - * Called on shutdown to cleanup temporary files. + * Called on shutdown to cleanup CDI beans and temporary files. */ private void shutdown() { debug("Shutting down and cleaning up ..."); + try { + CDI.current().getBeanManager().fireEvent(BeforeShutdown.class); + } catch (Exception e) { + // do nothing + } + for (JarFileInfo jarFileInfo : jarFiles) { try { jarFileInfo.getJarFile().close();