You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2010/06/23 15:18:36 UTC
svn commit: r957188 - in
/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform:
pom.xml src/main/java/org/apache/clerezza/platform/BootMonitor.java
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/users@felix.apache.org/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);
}
-
}