]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/internal/kernel/CmsDeployment.java
Improve node deployment
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / kernel / CmsDeployment.java
index 6faa4c9e2ee2e36ed69150949ab5e528548d3ecf..07c10f486045f64d0d7adf120367b2af08a93c13 100644 (file)
@@ -28,6 +28,7 @@ import org.argeo.node.NodeConstants;
 import org.argeo.node.NodeDeployment;
 import org.argeo.node.NodeState;
 import org.argeo.node.security.CryptoKeyring;
+import org.argeo.osgi.useradmin.UserAdminConf;
 import org.argeo.util.LangUtils;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -108,6 +109,20 @@ public class CmsDeployment implements NodeDeployment {
                                                Object cn = config.getProperties().get(NodeConstants.CN);
                                                log.debug("Standalone repo cn: " + cn);
                                        }
+                                       configs = configurationAdmin
+                                                       .listConfigurations("(service.factoryPid=" + NodeConstants.NODE_USER_ADMIN_PID + ")");
+
+                                       boolean hasDomain = false;
+                                       for (Configuration config : configs) {
+                                               Object realm = config.getProperties().get(UserAdminConf.realm.name());
+                                               if (realm != null) {
+                                                       log.debug("Realm: " + realm);
+                                                       hasDomain = true;
+                                               }
+                                       }
+                                       if (!hasDomain) {
+                                               loadNoIpaJaasConfiguration();
+                                       }
                                } catch (Exception e) {
                                        throw new CmsException("Cannot initialize config", e);
                                }
@@ -116,8 +131,18 @@ public class CmsDeployment implements NodeDeployment {
                }.open();
        }
 
+       private void loadNoIpaJaasConfiguration() {
+               if (System.getProperty(KernelConstants.JAAS_CONFIG_PROP) == null) {
+                       String jaasConfig = KernelConstants.JAAS_CONFIG_NOIPA;
+                       URL url = getClass().getClassLoader().getResource(jaasConfig);
+                       KernelUtils.setJaasConfiguration(url);
+                       if (log.isDebugEnabled())
+                               log.debug("Set no-IPA JAAS configuration.");
+               }
+       }
+
        public void shutdown() {
-               if(nodeHttp!=null)
+               if (nodeHttp != null)
                        nodeHttp.destroy();
                if (deployConfig != null)
                        deployConfig.save();
@@ -132,25 +157,25 @@ public class CmsDeployment implements NodeDeployment {
                        long initDuration = System.currentTimeMillis() - begin;
                        if (log.isTraceEnabled())
                                log.trace("Kernel initialization took " + initDuration + "ms");
-                       directorsCut(initDuration);
+                       tributeToFreeSoftware(initDuration);
                }
        }
 
-       final private void directorsCut(long initDuration) {
-               // final long ms = 128l + (long) (Math.random() * 128d);
-               long ms = initDuration / 100;
-               log.info("Spend " + ms + "ms" + " reflecting on the progress brought to mankind" + " by Free Software...");
-               long beginNano = System.nanoTime();
-               try {
-                       Thread.sleep(ms, 0);
-               } catch (InterruptedException e) {
-                       // silent
+       final private void tributeToFreeSoftware(long initDuration) {
+               if (log.isTraceEnabled()) {
+                       long ms = initDuration / 100;
+                       log.trace("Spend " + ms + "ms" + " reflecting on the progress brought to mankind" + " by Free Software...");
+                       long beginNano = System.nanoTime();
+                       try {
+                               Thread.sleep(ms, 0);
+                       } catch (InterruptedException e) {
+                               // silent
+                       }
+                       long durationNano = System.nanoTime() - beginNano;
+                       final double M = 1000d * 1000d;
+                       double sleepAccuracy = ((double) durationNano) / (ms * M);
+                       log.trace("Sleep accuracy: " + String.format("%.2f", 100 - (sleepAccuracy * 100 - 100)) + " %");
                }
-               long durationNano = System.nanoTime() - beginNano;
-               final double M = 1000d * 1000d;
-               double sleepAccuracy = ((double) durationNano) / (ms * M);
-               if (log.isDebugEnabled())
-                       log.debug("Sleep accuracy: " + String.format("%.2f", 100 - (sleepAccuracy * 100 - 100)) + " %");
        }
 
        private void prepareNodeRepository(Repository deployedNodeRepository) {