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();