Author: reto
Date: Wed Jun 23 13:18:35 2010
New Revision: 957188

URL: http://svn.apache.org/viewvc?rev=957188&view=rev
Log:
faster boot by starting early doing the scala-compile (pairing with tommaso)

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml?rev=957188&r1=957187&r2=957188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/pom.xml
 Wed Jun 23 13:18:35 2010
@@ -22,6 +22,10 @@
                        <groupId>org.apache.felix</groupId>
                        
<artifactId>org.apache.felix.scr.annotations</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>org.osgi</groupId>
+                       <artifactId>org.osgi.compendium</artifactId>
+               </dependency>
        </dependencies>
 </project>
 

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java?rev=957188&r1=957187&r2=957188&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform/src/main/java/org/apache/clerezza/platform/BootMonitor.java
 Wed Jun 23 13:18:35 2010
@@ -21,7 +21,6 @@ package org.apache.clerezza.platform;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.logging.Level;
 import javax.script.Compilable;
 import javax.script.ScriptEngineFactory;
 import javax.script.ScriptException;
@@ -31,6 +30,7 @@ import org.slf4j.LoggerFactory;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.ReferencePolicy;
+import org.osgi.service.component.ComponentContext;
 
 /**
  * This component logs a message when Apache Clerezza was launched 
successfully.
@@ -50,50 +50,61 @@ import org.apache.felix.scr.annotations.
  *
  * see thread starting at 
http://www.mail-archive.com/[email protected]/msg07647.html
  */
-
-...@component(enabled=true, immediate=true)
-...@reference(name="jaxrsResource",
-               cardinality=ReferenceCardinality.OPTIONAL_MULTIPLE,
-               policy=ReferencePolicy.DYNAMIC,
-               referenceInterface=Object.class,
-               target="(javax.ws.rs=true)")
+...@component(enabled = true, immediate = true)
+...@reference(name = "jaxrsResource",
+cardinality = ReferenceCardinality.OPTIONAL_MULTIPLE,
+policy = ReferencePolicy.DYNAMIC,
+referenceInterface = Object.class,
+target = "(javax.ws.rs=true)")
 public class BootMonitor {
 
-       @Reference(target="(javax.script.language=scala)")
+       @Reference(target = "(javax.script.language=scala)")
        private ScriptEngineFactory scalaScriptEngineFactory;
-       
        private Set<Object> rootResources =
                        Collections.synchronizedSet(new HashSet<Object>());
-
        /**
         * true when the user has been notified that clerezza started
         */
-       private boolean started = false;
-
+       private boolean clerezzaStarted = false;
+       private volatile boolean activated = false;
        private final Logger logger = 
LoggerFactory.getLogger(BootMonitor.class);
 
+       protected void activate(ComponentContext context) {
+               //compile a script to initialize scala-compiler (needed by scal 
a server pages)
+               Thread t = new Thread() {
+
+                       @Override
+                       public void run() {
+                               try {
+                                       ((Compilable) 
scalaScriptEngineFactory.getScriptEngine()).compile("println(\"helo\")");
+                               } catch (ScriptException ex) {
+                                       logger.warn(ex.toString());
+                               }
+                               activated = true;
+                       }
+               };
+               t.start();
+       }
+
        protected void bindJaxrsResource(Object p) {
                rootResources.add(p);
-               if (!started && (rootResources.size() == 35)) {
+               if (!clerezzaStarted && (rootResources.size() == 35)) {
                        Thread t = new Thread() {
+
                                @Override
                                public void run() {
                                        int lastSize = 0;
                                        for (int i = 0; i < 100; i++) {
                                                if (rootResources.size() == 
lastSize) {
-                                                       //compile a script to 
initialize scala-compiler (needed by scal a server pages)
-                                                       try {
-                                                               
((Compilable)scalaScriptEngineFactory.getScriptEngine()).compile("println(\"helo\")");
-                                                       } catch 
(ScriptException ex) {
-                                                               
logger.warn(ex.toString());
+                                                       clerezzaStarted = true;
+                                                       if (activated) {
+                                                               
logger.info("The Apache Clerezza Platform is now operational.");
+                                                               return;
                                                        }
-                                                       started = true;
-                                                       logger.info("The Apache 
Clerezza Platform is now operational.");
-                                                       return;
                                                }
                                                lastSize = rootResources.size();
                                                try {
-                                                       Thread.sleep(1000);
+                                                       Thread.sleep(500);
                                                } catch (InterruptedException 
ex) {
                                                        throw new 
RuntimeException();
                                                }
@@ -107,5 +118,4 @@ public class BootMonitor {
        protected void unbindJaxrsResource(Object p) {
                rootResources.remove(p);
        }
-
 }


Reply via email to