BootstrapTask.java

00001 
00026 package org.objectweb.jonas.ant;
00027 
00028 import java.io.File;
00029 
00030 import org.apache.tools.ant.BuildException;
00031 import org.apache.tools.ant.Task;
00032 import org.apache.tools.ant.taskdefs.Java;
00033 import org.apache.tools.ant.types.Path;
00034 
00041 public abstract class BootstrapTask extends Task {
00042 
00046     private static final String BOOTSTRAP_CLASS = "org.objectweb.jonas.server.Bootstrap";
00047 
00051     private static final String DEFAULT_SERVER_NAME = "jonas";
00052 
00056     private String taskName = "JOnAS";
00057 
00061     private File jonasRoot = null;
00062 
00066     private String serverName = DEFAULT_SERVER_NAME;
00067 
00071     private File jonasBase = null;
00072 
00076     private String catalinaHome = null;
00077 
00081     private String jettyHome = null;
00082 
00086     private String jvmOpts = null;
00087 
00091     private Path classpath = null;
00092 
00097     public void setJonasRoot(File jonasRoot) {
00098         this.jonasRoot = jonasRoot;
00099     }
00100 
00105     public void setJonasbase(File jonasBase) {
00106         this.jonasBase = jonasBase;
00107     }
00108 
00113     public void setJvmopts(String jvmOpts) {
00114         this.jvmOpts = jvmOpts;
00115     }
00116 
00121     public Path createClasspath() {
00122         return new Path(getProject());
00123     }
00124 
00129     public void setClasspath(Path classpath) {
00130         this.classpath = classpath;
00131     }
00132 
00137     protected Java getBootstraptask(String definedClass) {
00138 
00139         if (jonasRoot == null) {
00140             throw new BuildException("jonasroot element is not set");
00141         }
00142 
00143         if (jonasBase == null) {
00144             jonasBase = jonasRoot;
00145         }
00146 
00147         Java bootstrapTask = (Java) getProject().createTask("java");
00148         bootstrapTask.setTaskName(taskName);
00149         bootstrapTask.setFork(true);
00150         bootstrapTask.setFailonerror(true);
00151 
00152         // Name of the server
00153         bootstrapTask.createJvmarg().setValue("-Djonas.name=" + serverName);
00154 
00155         // jonas root
00156         bootstrapTask.createJvmarg().setValue("-Dinstall.root=" + jonasRoot);
00157 
00158         // jonas base
00159         bootstrapTask.createJvmarg().setValue("-Djonas.base=" + jonasBase);
00160 
00161         // Properties of JVM
00162         bootstrapTask.createJvmarg().setValue("-Djonas.default.classloader=true");
00163         bootstrapTask.createJvmarg().setValue("-Djonas.classpath=");
00164         bootstrapTask.createJvmarg().setValue(
00165                 "-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory");
00166 
00167         // iiop
00168         File jonasLibDir = new File(jonasRoot, "lib");
00169         File jonasLibEndorsedDir = new File(jonasLibDir, "endorsed");
00170         bootstrapTask.createJvmarg().setValue(
00171                 "-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate");
00172         bootstrapTask.createJvmarg().setValue(
00173                 "-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory");
00174         bootstrapTask.createJvmarg().setValue("-Djava.endorsed.dirs=" + jonasLibEndorsedDir.getPath());
00175 
00176         // Rmi annotation
00177         bootstrapTask.createJvmarg().setValue(
00178                 "-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi");
00179 
00180         // Webcontainer
00181         if (catalinaHome != null) {
00182             bootstrapTask.createJvmarg().setValue("-Dcatalina.home=" + catalinaHome);
00183         }
00184         bootstrapTask.createJvmarg().setValue("-Dcatalina.base=" + jonasBase);
00185 
00186         if (jettyHome != null) {
00187             bootstrapTask.createJvmarg().setValue("-Djetty.home=" + jettyHome);
00188         }
00189 
00190         // java policy file
00191         String jonasConfigDir = jonasBase + File.separator + "conf";
00192         File javaPolicyFile = new File(jonasConfigDir, "java.policy");
00193         if (javaPolicyFile.exists()) {
00194             bootstrapTask.createJvmarg().setValue("-Djava.security.policy=" + javaPolicyFile.getPath());
00195         }
00196         File javaAuthLoginFile = new File(jonasConfigDir, "jaas.config");
00197         bootstrapTask.createJvmarg().setValue("-Djava.security.auth.login.config=" + javaAuthLoginFile.getPath());
00198 
00199         // The bootstrap class must launch the defined class
00200         bootstrapTask.createArg().setValue(definedClass);
00201 
00202         // add jonas_base/conf
00203         classpath = new Path(getProject(), jonasConfigDir);
00204 
00205         // then add ow_jonas_bootstrap.jar to classloader
00206         String bootJar = jonasRoot + File.separator + "lib" + File.separator + "common" + File.separator
00207                 + "ow_jonas_bootstrap.jar";
00208         classpath.append(new Path(getProject(), bootJar));
00209 
00210         // Add tools.jar
00211         String toolsJar = System.getProperty("java.home") + File.separator + ".." + File.separator + "lib"
00212                 + File.separator + "tools.jar";
00213         classpath.append(new Path(getProject(), toolsJar));
00214 
00215         // Set the classpath
00216         bootstrapTask.setClasspath(classpath);
00217 
00218         // class to use = bootstrap class
00219         bootstrapTask.setClassname(BOOTSTRAP_CLASS);
00220 
00221         // add user defined jvmopts
00222         if (jvmOpts != null && !jvmOpts.equals("")) {
00223             bootstrapTask.createJvmarg().setLine(jvmOpts);
00224         }
00225 
00226         // add jonas name
00227         bootstrapTask.createArg().setValue("-n");
00228         bootstrapTask.createArg().setValue(getServerName());
00229 
00230         return bootstrapTask;
00231 
00232     }
00233 
00237     public String getTaskName() {
00238         return taskName;
00239     }
00240 
00245     public void setTaskName(String taskName) {
00246         this.taskName = taskName;
00247     }
00248 
00252     public String getServerName() {
00253         return serverName;
00254     }
00255 
00260     public void setServerName(String serverName) {
00261         this.serverName = serverName;
00262     }
00263 
00267     public String getCatalinaHome() {
00268         return catalinaHome;
00269     }
00270 
00275     public void setCatalinaHome(String catalinaHome) {
00276         this.catalinaHome = catalinaHome;
00277     }
00278 
00282     public String getJettyHome() {
00283         return jettyHome;
00284     }
00285 
00290     public void setJettyHome(String jettyHome) {
00291         this.jettyHome = jettyHome;
00292     }
00296     public File getJonasRoot() {
00297         return jonasRoot;
00298     }
00299 
00300 }

Generated on Tue Feb 15 15:05:13 2005 for JOnAS by  doxygen 1.3.9.1