All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.objectweb.jonas.ant.BootstrapTask Maven / Gradle / Ivy

The newest version!
/**
 * JOnAS: Java(TM) Open Application Server
 * Copyright (C) 2004 Bull S.A.
 * Contact: [email protected]
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
 * USA
 *
 * Initial developer: Florent BENOIT
 * --------------------------------------------------------------------------
 * $Id: BootstrapTask.java 10521 2007-06-04 15:30:13Z sauthieg $
 * --------------------------------------------------------------------------
 */
package org.objectweb.jonas.ant;

import java.io.File;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.types.Path;

/**
 * Allow to use the BootStrap class 
It allows to do some operations like *
  • starting/stopping JOnAS
  • Deploying some apps
  • * etc... * @author Florent Benoit */ public abstract class BootstrapTask extends Task { /** * Bootstrap class name */ private static final String BOOTSTRAP_CLASS = "org.objectweb.jonas.server.Bootstrap"; /** * Default JOnAS server name */ private static final String DEFAULT_SERVER_NAME = "jonas"; /** * Name of the task (to be displayed in log : default to JOnAS) */ private String taskName = "JOnAS"; /** * JOnAS Root */ private File jonasRoot = null; /** * Name of the server (default 'jonas') */ private String serverName = DEFAULT_SERVER_NAME; /** * Name of the server (default 'jonas') */ private String domainName = null; /** * JOnAS Base */ private File jonasBase = null; /** * Catalina Home */ private String catalinaHome = null; /** * Jetty home */ private String jettyHome = null; /** * Options given to the JVM */ private String jvmOpts = null; /** * Classpath used for this task */ private Path classpath = null; /** * Set the JOnAS root directory. * @param jonasRoot the JOnAS root directory. */ public void setJonasRoot(File jonasRoot) { this.jonasRoot = jonasRoot; } /** * Set the JOnAS base directory. * @param jonasBase the JOnAS base directory. */ public void setJonasbase(File jonasBase) { this.jonasBase = jonasBase; } /** * Set the additional args to pass to the JVM. * @param jvmOpts the options. */ public void setJvmopts(String jvmOpts) { this.jvmOpts = jvmOpts; } /** * Adds to the classpath the class of the project * @return the path to be configured. */ public Path createClasspath() { return new Path(getProject()); } /** * Set the classpath for this task * @param classpath the classpath to use. */ public void setClasspath(Path classpath) { this.classpath = classpath; } /** * Run the task * @see org.apache.tools.ant.Task#execute() */ protected Java getBootstraptask(String definedClass) { if (jonasRoot == null) { // get ant property String jr = getProject().getProperty("jonas.root"); jonasRoot = new File(jr); if (jr == null) { throw new BuildException("attribute jonasroot is necessary."); } } if (jonasBase == null) { jonasBase = jonasRoot; } Java bootstrapTask = (Java) getProject().createTask("java"); bootstrapTask.setTaskName(taskName); bootstrapTask.setFork(true); bootstrapTask.setFailonerror(true); // Name of the server bootstrapTask.createJvmarg().setValue("-Djonas.name=" + serverName); // Name of the domain if (domainName != null) { bootstrapTask.createJvmarg().setValue("-Ddomain.name=" + domainName); } // jonas root bootstrapTask.createJvmarg().setValue("-Dinstall.root=" + jonasRoot); // jonas base bootstrapTask.createJvmarg().setValue("-Djonas.base=" + jonasBase); // set headless (for unix without X running) bootstrapTask.createJvmarg().setValue("-Djava.awt.headless=true"); // Properties of JVM bootstrapTask.createJvmarg().setValue("-Djonas.default.classloader=true"); bootstrapTask.createJvmarg().setValue("-Djonas.classpath="); bootstrapTask.createJvmarg().setValue( "-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory"); // iiop bootstrapTask.createJvmarg().setValue("-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB"); bootstrapTask.createJvmarg().setValue("-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton"); bootstrapTask.createJvmarg().setValue("-Dorg.omg.PortableInterceptor.ORBInitializerClass.standard_init=org.jacorb.orb.standardInterceptors.IORInterceptorInitializer"); File jonasLibDir = new File(jonasRoot, "lib"); File jonasLibEndorsedDir = new File(jonasLibDir, "endorsed"); bootstrapTask.createJvmarg().setValue( "-Djavax.rmi.CORBA.PortableRemoteObjectClass=org.objectweb.carol.rmi.multi.MultiPRODelegate"); bootstrapTask.createJvmarg().setValue( "-Djava.naming.factory.initial=org.objectweb.carol.jndi.spi.MultiOrbInitialContextFactory"); bootstrapTask.createJvmarg().setValue("-Djava.endorsed.dirs=" + jonasLibEndorsedDir.getPath()); // Rmi annotation bootstrapTask.createJvmarg().setValue( "-Djava.rmi.server.RMIClassLoaderSpi=org.objectweb.jonas.server.RemoteClassLoaderSpi"); // Webcontainer if (catalinaHome != null) { bootstrapTask.createJvmarg().setValue("-Dcatalina.home=" + catalinaHome); } bootstrapTask.createJvmarg().setValue("-Dcatalina.base=" + jonasBase); if (jettyHome != null) { bootstrapTask.createJvmarg().setValue("-Djetty.home=" + jettyHome); } // java policy file String jonasConfigDir = jonasBase + File.separator + "conf"; File javaPolicyFile = new File(jonasConfigDir, "java.policy"); if (javaPolicyFile.exists()) { bootstrapTask.createJvmarg().setValue("-Djava.security.policy=" + javaPolicyFile.getPath()); } File javaAuthLoginFile = new File(jonasConfigDir, "jaas.config"); bootstrapTask.createJvmarg().setValue("-Djava.security.auth.login.config=" + javaAuthLoginFile.getPath()); // The bootstrap class must launch the defined class bootstrapTask.createArg().setValue(definedClass); // add jonas_base/conf classpath = new Path(getProject(), jonasConfigDir); // then add ow_jonas_bootstrap.jar to classloader String bootJar = jonasRoot + File.separator + "lib" + File.separator + "common" + File.separator + "ow_jonas_bootstrap.jar"; classpath.append(new Path(getProject(), bootJar)); // Add tools.jar String toolsJar = System.getProperty("java.home") + File.separator + ".." + File.separator + "lib" + File.separator + "tools.jar"; classpath.append(new Path(getProject(), toolsJar)); // Set the classpath bootstrapTask.setClasspath(classpath); // class to use = bootstrap class bootstrapTask.setClassname(BOOTSTRAP_CLASS); // add user defined jvmopts if (jvmOpts != null && !jvmOpts.equals("")) { bootstrapTask.createJvmarg().setLine(jvmOpts); } // add jonas name if (serverName != null) { bootstrapTask.createArg().setValue("-n"); bootstrapTask.createArg().setValue(getServerName()); } return bootstrapTask; } /** * @return the taskName. */ public String getTaskName() { return taskName; } /** * Set the name of the task * @param taskName Name of the task */ public void setTaskName(String taskName) { this.taskName = taskName; } /** * @return the server Name. */ public String getServerName() { return serverName; } /** * Set the name of the server * @param serverName The serverName to set. */ public void setServerName(String serverName) { this.serverName = serverName; } /** * @return the catalinaHome. */ public String getCatalinaHome() { return catalinaHome; } /** * Set catalina Home * @param catalinaHome The catalinaHome to set. */ public void setCatalinaHome(String catalinaHome) { this.catalinaHome = catalinaHome; } /** * @return the jettyHome. */ public String getJettyHome() { return jettyHome; } /** * Set jetty home path * @param jettyHome The jettyHome to set. */ public void setJettyHome(String jettyHome) { this.jettyHome = jettyHome; } /** * @return the jonasRoot. */ public File getJonasRoot() { return jonasRoot; } /** * @return the domainName. */ public String getDomainName() { return domainName; } /** * Set domainName * @param domainName The domainName to set. */ public void setDomainName(String domainName) { this.domainName = domainName; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy