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
00153 bootstrapTask.createJvmarg().setValue("-Djonas.name=" + serverName);
00154
00155
00156 bootstrapTask.createJvmarg().setValue("-Dinstall.root=" + jonasRoot);
00157
00158
00159 bootstrapTask.createJvmarg().setValue("-Djonas.base=" + jonasBase);
00160
00161
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
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
00177 bootstrapTask.createJvmarg().setValue(
00178 "-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi");
00179
00180
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
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
00200 bootstrapTask.createArg().setValue(definedClass);
00201
00202
00203 classpath = new Path(getProject(), jonasConfigDir);
00204
00205
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
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
00216 bootstrapTask.setClasspath(classpath);
00217
00218
00219 bootstrapTask.setClassname(BOOTSTRAP_CLASS);
00220
00221
00222 if (jvmOpts != null && !jvmOpts.equals("")) {
00223 bootstrapTask.createJvmarg().setLine(jvmOpts);
00224 }
00225
00226
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 }