diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java new file mode 100644 index 00000000..c7a33a19 --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/JonasHotDeploymentTool.java @@ -0,0 +1,252 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.tools.ant.taskdefs.optional.j2ee; + +import java.io.File; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.taskdefs.Java; +import org.apache.tools.ant.types.Path; + +/** + * An Ant wrapper task for the weblogic.deploy tool. This is used + * to hot-deploy J2EE applications to a running WebLogic server. + * This is <b>not</b> the same as creating the application + * archive. This task assumes the archive (EAR, JAR, or WAR) file + * has been assembled and is supplied as the "source" attribute. + * <p> + * + * In the end, this task assembles the commandline parameters and + * runs the weblogic.deploy tool in a separate JVM. + * + *@see org.apache.tools.ant.taskdefs.optional.j2ee.HotDeploymentTool + *@see org.apache.tools.ant.taskdefs.optional.j2ee.AbstractHotDeploymentTool + *@see org.apache.tools.ant.taskdefs.optional.j2ee.ServerDeploy + */ +public class JonasHotDeploymentTool extends GenericHotDeploymentTool implements HotDeploymentTool { + + /** + * Description of the Field + */ + protected static final String DEFAULT_ORB = "RMI"; + + /** + * The classname of the tool to run * + */ + private static final String JONAS_DEPLOY_CLASS_NAME = "org.objectweb.jonas.adm.JonasAdmin"; + + /** + * All the valid actions that weblogic.deploy permits * + */ + private static final String[] VALID_ACTIONS + = {ACTION_DELETE, ACTION_DEPLOY, ACTION_LIST, ACTION_UNDEPLOY, ACTION_UPDATE}; + + /** + * Description of the Field + */ + private File jonasroot; + + /** + * Description of the Field + */ + private String orb = null; + + /** + * Description of the Field + */ + private String davidHost; + + /** + * Description of the Field + */ + private int davidPort; + + + /** + * Set the host for the David ORB; required if + * ORB==david. + * + *@param inValue The new davidhost value + */ + public void setDavidhost(final String inValue) { + davidHost = inValue; + } + + + /** + * Set the port for the David ORB; required if + * ORB==david. + * + *@param inValue The new davidport value + */ + public void setDavidport(final int inValue) { + davidPort = inValue; + } + + + /** + * set the jonas root directory (-Dinstall.root=). This + * element is required. + * + *@param inValue The new jonasroot value + */ + public void setJonasroot(final File inValue) { + jonasroot = inValue; + } + + + /** + * + * Choose your ORB : RMI, JEREMIE, DAVID, ...; optional. + * If omitted, it defaults + * to the one present in classpath. The corresponding JOnAS JAR is + * automatically added to the classpath. If your orb is DAVID (RMI/IIOP) you must + * specify davidhost and davidport properties. + * + *@param inValue RMI, JEREMIE, DAVID,... + */ + public void setOrb(final String inValue) { + orb = inValue; + } + + + /** + * gets the classpath field. + * + *@return A Path representing the "classpath" attribute. + */ + public Path getClasspath() { + + Path aClassPath = super.getClasspath(); + + if (aClassPath == null) { + aClassPath = new Path(getTask().getProject()); + } + if (orb != null) { + String aOrbJar = new File(jonasroot, "lib/" + orb + "_jonas.jar").toString(); + String aConfigDir = new File(jonasroot, "config/").toString(); + Path aJOnASOrbPath = new Path(aClassPath.getProject(), + aOrbJar + File.pathSeparator + aConfigDir); + aClassPath.append(aJOnASOrbPath); + } + return aClassPath; + } + + + /** + * Validates the passed in attributes. <p> + * + * The rules are: + * <ol> + * <li> If action is "deploy" or "update" the "application" + * and "source" attributes must be supplied. + * <li> If action is "delete" or "undeploy" the + * "application" attribute must be supplied. + * + *@exception BuildException Description + * of Exception + */ + public void validateAttributes() throws BuildException { + // super.validateAttributes(); // don't want to call this method + + Java java = getJava(); + + String action = getTask().getAction(); + if (action == null) { + throw new BuildException("The \"action\" attribute must be set"); + } + + if (!isActionValid()) { + throw new BuildException("Invalid action \"" + action + "\" passed"); + } + + if (getClassName() == null) { + setClassName(JONAS_DEPLOY_CLASS_NAME); + } + + if (jonasroot == null || jonasroot.isDirectory()) { + java.createJvmarg().setValue("-Dinstall.root=" + jonasroot); + java.createJvmarg().setValue("-Djava.security.policy=" + jonasroot + + "/config/java.policy"); + + if ("DAVID".equals(orb)) { + java.createJvmarg().setValue("-Dorg.omg.CORBA.ORBClass" + + "=org.objectweb.david.libs.binding.orbs.iiop.IIOPORB"); + java.createJvmarg().setValue("-Dorg.omg.CORBA.ORBSingletonClass=" + + "org.objectweb.david.libs.binding.orbs.ORBSingletonClass"); + java.createJvmarg().setValue("-Djavax.rmi.CORBA.StubClass=" + + "org.objectweb.david.libs.stub_factories.rmi.StubDelegate"); + java.createJvmarg().setValue("-Djavax.rmi.CORBA.PortableRemoteObjectClass=" + + "org.objectweb.david.libs.binding.rmi.ORBPortableRemoteObjectDelegate"); + java.createJvmarg().setValue("-Djavax.rmi.CORBA.UtilClass=" + + "org.objectweb.david.libs.helpers.RMIUtilDelegate"); + java.createJvmarg().setValue("-Ddavid.CosNaming.default_method=0"); + java.createJvmarg().setValue("-Ddavid.rmi.ValueHandlerClass=" + + "com.sun.corba.se.internal.io.ValueHandlerImpl"); + if (davidHost != null) { + java.createJvmarg().setValue("-Ddavid.CosNaming.default_host=" + + davidHost); + } + if (davidPort != 0) { + java.createJvmarg().setValue("-Ddavid.CosNaming.default_port=" + + davidPort); + } + } + } + + if (getServer() != null) { + java.createArg().setLine("-n " + getServer()); + } + + if (action.equals(ACTION_DEPLOY) + || action.equals(ACTION_UPDATE) + || action.equals("redeploy")) { + java.createArg().setLine("-a " + getTask().getSource()); + } else if (action.equals(ACTION_DELETE) || action.equals(ACTION_UNDEPLOY)) { + java.createArg().setLine("-r " + getTask().getSource()); + } else if (action.equals(ACTION_LIST)) { + java.createArg().setValue("-l"); + } + } + + + /** + * Determines if the action supplied is valid. <p> + * + * Valid actions are contained in the static array + * VALID_ACTIONS + * + *@return true if the action attribute is valid, false if + * not. + */ + protected boolean isActionValid() { + boolean valid = false; + + String action = getTask().getAction(); + + for (int i = 0; i < VALID_ACTIONS.length; i++) { + if (action.equals(VALID_ACTIONS[i])) { + valid = true; + break; + } + } + + return valid; + } +} + |