You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2010/01/12 15:12:11 UTC
svn commit: r898334 -
/tuscany/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyStandardContext.java
Author: antelder
Date: Tue Jan 12 14:12:11 2010
New Revision: 898334
URL: http://svn.apache.org/viewvc?rev=898334&view=rev
Log:
Start an empty node to initialize the endpoint regsitry before any sca apps are started
Modified:
tuscany/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyStandardContext.java
Modified: tuscany/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyStandardContext.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyStandardContext.java?rev=898334&r1=898333&r2=898334&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyStandardContext.java (original)
+++ tuscany/sca-java-2.x/trunk/distribution/tomcat/tomcat-hook/src/main/java/org/apache/tuscany/sca/tomcat/TuscanyStandardContext.java Tue Jan 12 14:12:11 2010
@@ -20,6 +20,7 @@
package org.apache.tuscany.sca.tomcat;
import java.io.File;
+import java.lang.reflect.Constructor;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.logging.Logger;
@@ -47,6 +48,9 @@
// ?? is that comment still true?
private static URLClassLoader tuscanyClassLoader;
+ public TuscanyStandardContext() {
+ }
+
/**
* Overrides the getLoader method in the Tomcat StandardContext as its a convenient
* point to insert the Tuscany initilization. This gets called the first time during
@@ -62,6 +66,9 @@
ClassLoader parent = getParentClassLoader();
if (isSCAApp = isSCAApplication()) {
+ if (tuscanyClassLoader == null) {
+ initTuscany();
+ }
setParentClassLoader(getTuscanyClassloader(parent));
setDefaultWebXml("conf/tuscany-web.xml");
}
@@ -121,7 +128,16 @@
return true;
}
- private synchronized URLClassLoader getTuscanyClassloader(ClassLoader parent) {
+ private URLClassLoader getTuscanyClassloader(ClassLoader parent) {
+ return tuscanyClassLoader;
+ }
+
+ private void initTuscany() {
+ initTuscanyClassloader(getParentClassLoader());
+ initDomain();
+ }
+
+ private void initTuscanyClassloader(ClassLoader parent) {
if (tuscanyClassLoader == null) {
File tuscanyWar = new File(System.getProperty(TuscanyLifecycleListener.TUSCANY_WAR_PROP));
File[] runtimeJars = new File(tuscanyWar, "tuscany-lib").listFiles();
@@ -131,12 +147,25 @@
jarURLs[i] = runtimeJars[i].toURI().toURL();
}
tuscanyClassLoader = new URLClassLoader(jarURLs, parent);
- return tuscanyClassLoader;
+
} catch (Exception e) {
throw new RuntimeException(e);
}
}
- return tuscanyClassLoader;
+ }
+
+ private void initDomain() {
+ ClassLoader oldCL = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(tuscanyClassLoader);
+ Class<?> domainNodeClass = Class.forName("org.apache.tuscany.sca.domain.node.DomainNode", true, tuscanyClassLoader);
+ Constructor<?> domainNodeConstructor = domainNodeClass.getConstructor(new Class[] {String.class, new String[0].getClass()});
+ domainNodeConstructor.newInstance(TuscanyLifecycleListener.getDomainURI(), new String[0]);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ } finally {
+ Thread.currentThread().setContextClassLoader(oldCL);
+ }
}
}