Added cleanup (preDestroy) method to student example
diff --git a/jpars/student/student.web/src/main/java/eclipselink/example/jpars/student/web/WeaverBean.java b/jpars/student/student.web/src/main/java/eclipselink/example/jpars/student/web/WeaverBean.java
index 4813aae..d81923d 100644
--- a/jpars/student/student.web/src/main/java/eclipselink/example/jpars/student/web/WeaverBean.java
+++ b/jpars/student/student.web/src/main/java/eclipselink/example/jpars/student/web/WeaverBean.java
@@ -12,11 +12,16 @@
  ******************************************************************************/
 package eclipselink.example.jpars.student.web;
 
+import java.util.ServiceLoader;
 import javax.ejb.Singleton;
 import javax.ejb.Startup;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.PersistenceUnit;
 
+import javax.annotation.PreDestroy;
+import org.eclipse.persistence.jpa.rs.PersistenceContextFactory;
+import org.eclipse.persistence.jpa.rs.PersistenceContextFactoryProvider;
+
 /**
  * Forces weaving of persistence units
  *
@@ -26,4 +31,20 @@
 public class WeaverBean {
     @PersistenceUnit(unitName = "jpars_example_student")
     private EntityManagerFactory emf;
+
+    /**
+     * Clean up.
+     */
+    @PreDestroy
+    public void preDestroy() {
+        ServiceLoader<PersistenceContextFactoryProvider> persistenceContextFactoryProviderLoader =
+                ServiceLoader.load(PersistenceContextFactoryProvider.class, Thread.currentThread().getContextClassLoader());
+
+        for (PersistenceContextFactoryProvider persistenceContextFactoryProvider : persistenceContextFactoryProviderLoader) {
+            PersistenceContextFactory persistenceContextFactory = persistenceContextFactoryProvider.getPersistenceContextFactory(null);
+            if (persistenceContextFactory != null) {
+                persistenceContextFactory.close();
+            }
+        }
+    }
 }