Index: lams_build/build_base.xml =================================================================== RCS file: /usr/local/cvsroot/lams_build/build_base.xml,v diff -u -r1.25.2.26 -r1.25.2.27 --- lams_build/build_base.xml 27 Sep 2016 06:16:56 -0000 1.25.2.26 +++ lams_build/build_base.xml 23 Nov 2016 20:14:12 -0000 1.25.2.27 @@ -53,6 +53,8 @@ + + Index: lams_build/conf/j2ee/jboss-deployment-structure.xml =================================================================== RCS file: /usr/local/cvsroot/lams_build/conf/j2ee/Attic/jboss-deployment-structure.xml,v diff -u -r1.1.2.53 -r1.1.2.54 --- lams_build/conf/j2ee/jboss-deployment-structure.xml 27 Sep 2016 06:17:09 -0000 1.1.2.53 +++ lams_build/conf/j2ee/jboss-deployment-structure.xml 23 Nov 2016 20:14:12 -0000 1.1.2.54 @@ -36,6 +36,8 @@ + + Index: lams_common/.classpath =================================================================== RCS file: /usr/local/cvsroot/lams_common/.classpath,v diff -u -r1.25.2.30 -r1.25.2.31 --- lams_common/.classpath 27 Sep 2016 06:23:53 -0000 1.25.2.30 +++ lams_common/.classpath 23 Nov 2016 20:14:11 -0000 1.25.2.31 @@ -44,6 +44,8 @@ + + Index: lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java,v diff -u -r1.24.2.6 -r1.24.2.7 --- lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java 31 May 2016 07:54:55 -0000 1.24.2.6 +++ lams_common/src/java/org/lamsfoundation/lams/util/Configuration.java 23 Nov 2016 20:14:11 -0000 1.24.2.7 @@ -23,6 +23,8 @@ package org.lamsfoundation.lams.util; +import java.io.IOException; +import java.net.ConnectException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -34,6 +36,9 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.jboss.as.controller.client.ModelControllerClient; +import org.jboss.as.controller.client.helpers.Operations; +import org.jboss.dmr.ModelNode; import org.lamsfoundation.lams.config.ConfigurationItem; import org.lamsfoundation.lams.config.Registration; import org.lamsfoundation.lams.config.dao.IConfigurationDAO; @@ -164,13 +169,7 @@ @Override public void afterPropertiesSet() { - if (Configuration.items != null) { - return; - } Configuration.refreshCache(); - if (Configuration.items == null) { - return; - } String refreshCacheIntervalString = Configuration.get(ConfigurationKeys.CONFIGURATION_CACHE_REFRESH_INTERVAL); Integer refreshCacheInterval = StringUtils.isBlank(refreshCacheIntervalString) ? null @@ -191,6 +190,37 @@ e); } } + + new Thread("LAMSConfigurationServerStateCheckThread") { + @Override + public void run() { + boolean check = true; + do { + try (ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9990)) { + // try every 5 seconds + Thread.sleep(5000); + // read servedr state + ModelNode address = new ModelNode().setEmptyList(); + ModelNode op = Operations.createReadAttributeOperation(address, "server-state"); + ModelNode result = client.execute(op); + if (Operations.isSuccessfulOutcome(result)) { + String state = Operations.readResult(result).asString(); + if ("running".equalsIgnoreCase(state)) { + log.info("Refreshing configuration cache after server start"); + // refresh and die + Configuration.refreshCache(); + check = false; + } + } + } catch (ConnectException e) { + // this exception happens all the time until server starts up + } catch (IOException | InterruptedException e) { + // something really wrong happenned, die + check = false; + } + } while (check); + } + }.start(); } /**