diff --git a/zanata-war/src/main/java/org/zanata/ZanataInit.java b/zanata-war/src/main/java/org/zanata/ZanataInit.java index 42d8dfa97c..8bc0d243c9 100644 --- a/zanata-war/src/main/java/org/zanata/ZanataInit.java +++ b/zanata-war/src/main/java/org/zanata/ZanataInit.java @@ -50,6 +50,7 @@ import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import javax.naming.NamingException; +import javax.persistence.EntityManagerFactory; import javax.servlet.ServletContext; import lombok.extern.slf4j.Slf4j; @@ -58,6 +59,7 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.jboss.seam.Component; import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.Destroy; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Observer; @@ -107,6 +109,9 @@ public class ZanataInit { @In("event") private Event startupEvent; + @In + private EntityManagerFactory entityManagerFactory; + @Observer("org.jboss.seam.postInitialization") public void initZanata() throws Exception { checkAppServerVersion(); @@ -179,6 +184,13 @@ public void initZanata() throws Exception { log.info("Started Zanata..."); } + @Destroy + private void destroy() { + // Tell Hibernate Search to clean up indexes and lock files + entityManagerFactory.close(); + } + + private void checkAppServerVersion() throws MalformedObjectNameException, AttributeNotFoundException, MBeanException, ReflectionException, InstanceNotFoundException {