diff --git a/build.xml b/build.xml index 02fe36964..322587b11 100644 --- a/build.xml +++ b/build.xml @@ -263,21 +263,6 @@ - - - - - - - - - - - - - - - @@ -408,15 +393,6 @@ - - - @@ -657,10 +633,6 @@ - - - @@ -840,9 +812,6 @@ - - - @@ -893,17 +862,6 @@ - - - - - - - - diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreator.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreator.java deleted file mode 100644 index 2f763cd4c..000000000 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreator.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * 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.ejb; - -import java.io.File; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.DirectoryScanner; -import org.apache.tools.ant.taskdefs.Java; -import org.apache.tools.ant.taskdefs.MatchingTask; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.util.FileUtils; - -/** - * Builds a serialized deployment descriptor given a text file description of the - * descriptor in the format supported by WebLogic. - * - * This ant task is a front end for the weblogic DDCreator tool. - * - */ -public class DDCreator extends MatchingTask { - /** - * The root directory of the tree containing the textual deployment descriptors. The actual - * deployment descriptor files are selected using include and exclude constructs - * on the EJBC task, as supported by the MatchingTask superclass. - */ - private File descriptorDirectory; - - /** - * The directory where generated serialised deployment descriptors are placed. - */ - private File generatedFilesDirectory; - - /** - * The classpath to be used in the weblogic ejbc calls. It must contain the weblogic - * classes necessary fro DDCreator and the implementation classes of the - * home and remote interfaces. - */ - private String classpath; - - /** - * Do the work. - * - * The work is actually done by creating a helper task. This approach allows - * the classpath of the helper task to be set. Since the weblogic tools require - * the class files of the project's home and remote interfaces to be available in - * the classpath, this also avoids having to start ant with the class path of the - * project it is building. - * - * @exception BuildException if something goes wrong with the build - */ - public void execute() throws BuildException { - if (descriptorDirectory == null - || !descriptorDirectory.isDirectory()) { - throw new BuildException("descriptors directory " - + descriptorDirectory + " is not valid"); - } - if (generatedFilesDirectory == null - || !generatedFilesDirectory.isDirectory()) { - throw new BuildException("dest directory " - + generatedFilesDirectory + " is not valid"); - } - - String args = descriptorDirectory + " " + generatedFilesDirectory; - - // get all the files in the descriptor directory - DirectoryScanner ds = super.getDirectoryScanner(descriptorDirectory); - - String[] files = ds.getIncludedFiles(); - - for (int i = 0; i < files.length; ++i) { - args += " " + files[i]; - } - - String systemClassPath = System.getProperty("java.class.path"); - String execClassPath = FileUtils.translatePath(systemClassPath + ":" + classpath); - Java ddCreatorTask = new Java(this); - ddCreatorTask.setFork(true); - ddCreatorTask.setClassname("org.apache.tools.ant.taskdefs.optional.ejb.DDCreatorHelper"); - Commandline.Argument arguments = ddCreatorTask.createArg(); - arguments.setLine(args); - ddCreatorTask.setClasspath(new Path(getProject(), execClassPath)); - if (ddCreatorTask.executeJava() != 0) { - throw new BuildException("Execution of ddcreator helper failed"); - } - } - - /** - * Set the directory from where the text descriptions of the deployment descriptors are - * to be read. - * - * @param dirName the name of the directory containing the text deployment descriptor files. - */ - public void setDescriptors(String dirName) { - descriptorDirectory = new File(dirName); - } - - /** - * Set the directory into which the serialized deployment descriptors are to - * be written. - * - * @param dirName the name of the directory into which the serialised deployment - * descriptors are written. - */ - public void setDest(String dirName) { - generatedFilesDirectory = new File(dirName); - } - - /** - * Set the classpath to be used for this compilation. - * - * @param s the classpath to use for the ddcreator tool. - */ - public void setClasspath(String s) { - this.classpath = FileUtils.translatePath(s); - } -} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java deleted file mode 100644 index b9235201f..000000000 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/DDCreatorHelper.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * 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.ejb; - -import java.io.File; -import java.io.FileInputStream; -import java.io.ObjectInputStream; -import javax.ejb.deployment.DeploymentDescriptor; - -/** - * A helper class which performs the actual work of the ddcreator task. - * - * This class is run with a classpath which includes the weblogic tools and the home and remote - * interface class files referenced in the deployment descriptors being built. - * - */ -public final class DDCreatorHelper { - /** - * The root directory of the tree containing the textual deployment descriptors. - */ - private File descriptorDirectory; - - /** - * The directory where generated serialised deployment descriptors are written. - */ - private File generatedFilesDirectory; - - // CheckStyle:VisibilityModifier OFF - bc - /** - * The descriptor text files for which a serialised descriptor is to be created. - */ - String[] descriptors; - // CheckStyle:VisibilityModifier ON - - /** - * The main method. - * - * The main method creates an instance of the DDCreatorHelper, passing it the - * args which it then processes. - * @param args the arguments - * @throws Exception on error - */ - public static void main(String[] args) throws Exception { - DDCreatorHelper helper = new DDCreatorHelper(args); - helper.process(); - } - - /** - * Initialise the helper with the command arguments. - * - */ - private DDCreatorHelper(String[] args) { - int index = 0; - descriptorDirectory = new File(args[index++]); - generatedFilesDirectory = new File(args[index++]); - - descriptors = new String[args.length - index]; - for (int i = 0; index < args.length; ++i) { - descriptors[i] = args[index++]; - } - } - - /** - * Do the actual work. - * - * The work proceeds by examining each descriptor given. If the serialised - * file does not exist or is older than the text description, the weblogic - * DDCreator tool is invoked directly to build the serialised descriptor. - */ - private void process() throws Exception { - for (int i = 0; i < descriptors.length; ++i) { - String descriptorName = descriptors[i]; - File descriptorFile = new File(descriptorDirectory, descriptorName); - - int extIndex = descriptorName.lastIndexOf("."); - String serName = null; - if (extIndex != -1) { - serName = descriptorName.substring(0, extIndex) + ".ser"; - } else { - serName = descriptorName + ".ser"; - } - File serFile = new File(generatedFilesDirectory, serName); - - // do we need to regenerate the file - if (!serFile.exists() || serFile.lastModified() < descriptorFile.lastModified() - || regenerateSerializedFile(serFile)) { - - String[] args = {"-noexit", - "-d", serFile.getParent(), - "-outputfile", serFile.getName(), - descriptorFile.getPath()}; - try { - weblogic.ejb.utils.DDCreator.main(args); - } catch (Exception e) { - // there was an exception - run with no exit to get proper error - String[] newArgs = {"-d", generatedFilesDirectory.getPath(), - "-outputfile", serFile.getName(), - descriptorFile.getPath()}; - weblogic.ejb.utils.DDCreator.main(newArgs); - } - } - } - } - - /** - * EJBC will fail if the serialized descriptor file does not match the bean classes. - * You can test for this by trying to load the deployment descriptor. If it fails, - * the serialized file needs to be regenerated because the associated class files - * don't match. - */ - private boolean regenerateSerializedFile(File serFile) { - try { - - FileInputStream fis = new FileInputStream(serFile); - ObjectInputStream ois = new ObjectInputStream(fis); - DeploymentDescriptor dd = (DeploymentDescriptor) ois.readObject(); - fis.close(); - - // Since the descriptor read properly, everything should be o.k. - return false; - - } catch (Exception e) { - - // Weblogic will throw an error if the deployment descriptor does - // not match the class files. - return true; - - } - } -} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/Ejbc.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/Ejbc.java deleted file mode 100644 index 8061037a3..000000000 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/Ejbc.java +++ /dev/null @@ -1,197 +0,0 @@ -/* - * 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.ejb; - -import java.io.File; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.DirectoryScanner; -import org.apache.tools.ant.taskdefs.Java; -import org.apache.tools.ant.taskdefs.MatchingTask; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.util.FileUtils; - -/** - * Builds EJB support classes using WebLogic's ejbc tool from a directory containing - * a set of deployment descriptors. - * - * - */ -public class Ejbc extends MatchingTask { - /** - * The root directory of the tree containing the serialised deployment desciptors. The actual - * deployment descriptor files are selected using include and exclude constructs - * on the ejbc task provided by the MatchingTask superclass. - */ - private File descriptorDirectory; - - /** - * The directory where generated files are placed. - */ - private File generatedFilesDirectory; - - /** - * The name of the manifest file generated for the EJB jar. - */ - private File generatedManifestFile; - - /** - * The classpath to be used in the weblogic ejbc calls. It must contain the weblogic - * classes and the implementation classes of the home and remote interfaces. - */ - private String classpath; - - /** - * The source directory for the home and remote interfaces. This is used to determine if - * the generated deployment classes are out of date. - */ - private File sourceDirectory; - - // CheckStyle:VisibilityModifier OFF - bc - /** Whether to keep the generated files */ - public boolean keepgenerated; - // CheckStyle:VisibilityModifier ON - - /** - * Do the work. - * - * The work is actually done by creating a separate JVM to run a helper task. - * This approach allows the classpath of the helper task to be set. Since the - * weblogic tools require the class files of the project's home and remote - * interfaces to be available in the classpath, this also avoids having to - * start ant with the class path of the project it is building. - * - * @exception BuildException if someting goes wrong with the build - */ - public void execute() throws BuildException { - if (descriptorDirectory == null - || !descriptorDirectory.isDirectory()) { - throw new BuildException("descriptors directory " - + descriptorDirectory + " is not valid"); - } - if (generatedFilesDirectory == null - || !generatedFilesDirectory.isDirectory()) { - throw new BuildException("dest directory " - + generatedFilesDirectory + " is not valid"); - } - - if (sourceDirectory == null - || !sourceDirectory.isDirectory()) { - throw new BuildException("src directory " - + sourceDirectory + " is not valid"); - } - - String systemClassPath = System.getProperty("java.class.path"); - String execClassPath - = FileUtils.translatePath(systemClassPath + ":" + classpath - + ":" + generatedFilesDirectory); - // get all the files in the descriptor directory - DirectoryScanner ds = super.getDirectoryScanner(descriptorDirectory); - - String[] files = ds.getIncludedFiles(); - - Java helperTask = new Java(this); - helperTask.setFork(true); - helperTask.setClassname("org.apache.tools.ant.taskdefs.optional.ejb.EjbcHelper"); - String args = ""; - args += " " + descriptorDirectory; - args += " " + generatedFilesDirectory; - args += " " + sourceDirectory; - args += " " + generatedManifestFile; - args += " " + keepgenerated; - - for (int i = 0; i < files.length; ++i) { - args += " " + files[i]; - } - - Commandline.Argument arguments = helperTask.createArg(); - arguments.setLine(args); - helperTask.setClasspath(new Path(getProject(), execClassPath)); - if (helperTask.executeJava() != 0) { - throw new BuildException("Execution of ejbc helper failed"); - } - } - - /** - * get the keep generated attribute. - * @return the attribute. - */ - public boolean getKeepgenerated() { - return keepgenerated; - } - - /** - * Set the directory from where the serialized deployment descriptors are - * to be read. - * - * @param dirName the name of the directory containing the serialised deployment descriptors. - */ - public void setDescriptors(String dirName) { - descriptorDirectory = new File(dirName); - } - - /** - * Set the directory into which the support classes, RMI stubs, etc are to be written. - * - * @param dirName the name of the directory into which code is generated - */ - public void setDest(String dirName) { - generatedFilesDirectory = new File(dirName); - } - - /** - * If true, ejbc will keep the - * intermediate Java files used to build the class files. - * This can be useful when debugging. - * @param newKeepgenerated a boolean as a string. - */ - public void setKeepgenerated(String newKeepgenerated) { - keepgenerated = Boolean.valueOf(newKeepgenerated.trim()).booleanValue(); - - } - - /** - * Set the name of the generated manifest file. - * - * For each EJB that is processed an entry is created in this file. This can then be used - * to create a jar file for dploying the beans. - * - * @param manifestFilename the name of the manifest file to be generated. - */ - public void setManifest(String manifestFilename) { - generatedManifestFile = new File(manifestFilename); - } - - /** - * Set the classpath to be used for this compilation. - * @param s the classpath (as a string) to use. - */ - public void setClasspath(String s) { - this.classpath = FileUtils.translatePath(s); - } - - /** - * Set the directory containing the source code for the home interface, remote interface - * and public key class definitions. - * - * @param dirName the directory containg the source tree for the EJB's interface classes. - */ - public void setSrc(String dirName) { - sourceDirectory = new File(dirName); - } -} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbcHelper.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbcHelper.java deleted file mode 100644 index 7dea01afc..000000000 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/EjbcHelper.java +++ /dev/null @@ -1,259 +0,0 @@ -/* - * 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.ejb; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.PrintWriter; -import java.util.Vector; -import javax.ejb.deployment.DeploymentDescriptor; -import javax.ejb.deployment.EntityDescriptor; - - -/** - * A helper class which performs the actual work of the ejbc task. - * - * This class is run with a classpath which includes the weblogic tools and the home and remote - * interface class files referenced in the deployment descriptors being processed. - * - */ -public final class EjbcHelper { - /** - * The root directory of the tree containing the serialised deployment desciptors. - */ - private File descriptorDirectory; - - /** - * The directory where generated files are placed. - */ - private File generatedFilesDirectory; - - /** - * The name of the manifest file generated for the EJB jar. - */ - private File manifestFile; - - /** - * The source directory for the home and remote interfaces. This is used to determine if - * the generated deployment classes are out of date. - */ - private File sourceDirectory; - - // CheckStyle:VisibilityModifier OFF - bc - /** - * The names of the serialised deployment descriptors - */ - String[] descriptors; - // CheckStyle:VisibilityModifier ON - - private boolean keepGenerated; - - /** - * Command line interface for the ejbc helper task. - * @param args command line arguments. - * @throws Exception if there is a problem. - */ - public static void main(String[] args) throws Exception { - EjbcHelper helper = new EjbcHelper(args); - helper.process(); - } - - /** - * Initialise the EjbcHelper by reading the command arguments. - */ - private EjbcHelper(String[] args) { - int index = 0; - descriptorDirectory = new File(args[index++]); - generatedFilesDirectory = new File(args[index++]); - sourceDirectory = new File(args[index++]); - manifestFile = new File(args[index++]); - keepGenerated = Boolean.valueOf(args[index++]).booleanValue(); - - descriptors = new String[args.length - index]; - for (int i = 0; index < args.length; ++i) { - descriptors[i] = args[index++]; - } - } - - private String[] getCommandLine(boolean debug, File descriptorFile) { - Vector v = new Vector(); - if (!debug) { - v.addElement("-noexit"); - } - if (keepGenerated) { - v.addElement("-keepgenerated"); - } - v.addElement("-d"); - v.addElement(generatedFilesDirectory.getPath()); - v.addElement(descriptorFile.getPath()); - - String[] args = new String[v.size()]; - v.copyInto(args); - return args; - } - - /** - * Determine if the weblogic EJB support classes need to be regenerated - * for a given deployment descriptor. - * - * This process attempts to determine if the support classes need to be - * rebuilt. It does this by examining only some of the support classes - * which are typically generated. If the ejbc task is interrupted generating - * the support classes for a bean, all of the support classes should be removed - * to force regeneration of the support classes. - * - * @param descriptorFile the serialised deployment descriptor - * - * @return true if the support classes need to be regenerated. - * - * @throws IOException if the descriptor file cannot be closed. - */ - private boolean isRegenRequired(File descriptorFile) throws IOException { - // read in the descriptor. Under weblogic, the descriptor is a weblogic - // specific subclass which has references to the implementation classes. - // These classes must, therefore, be in the classpath when the deployment - // descriptor is loaded from the .ser file - FileInputStream fis = null; - try { - fis = new FileInputStream(descriptorFile); - ObjectInputStream ois = new ObjectInputStream(fis); - DeploymentDescriptor dd = (DeploymentDescriptor) ois.readObject(); - fis.close(); - - String homeInterfacePath - = dd.getHomeInterfaceClassName().replace('.', '/') + ".java"; - String remoteInterfacePath - = dd.getRemoteInterfaceClassName().replace('.', '/') + ".java"; - String primaryKeyClassPath = null; - if (dd instanceof EntityDescriptor) { - primaryKeyClassPath - = ((EntityDescriptor) dd).getPrimaryKeyClassName(); - primaryKeyClassPath - = primaryKeyClassPath.replace('.', '/') + ".java"; - } - - File homeInterfaceSource = new File(sourceDirectory, homeInterfacePath); - File remoteInterfaceSource = new File(sourceDirectory, remoteInterfacePath); - File primaryKeyClassSource = null; - if (primaryKeyClassPath != null) { - primaryKeyClassSource = new File(sourceDirectory, remoteInterfacePath); - } - - // are any of the above out of date. - // we find the implementation classes and see if they are older than any - // of the above or the .ser file itself. - String beanClassBase = dd.getEnterpriseBeanClassName().replace('.', '/'); - File ejbImplentationClass - = new File(generatedFilesDirectory, beanClassBase + "EOImpl.class"); - File homeImplementationClass - = new File(generatedFilesDirectory, beanClassBase + "HomeImpl.class"); - File beanStubClass - = new File(generatedFilesDirectory, beanClassBase + "EOImpl_WLStub.class"); - - // if the implementation classes don;t exist regenerate - if (!ejbImplentationClass.exists() - || !homeImplementationClass.exists() - || !beanStubClass.exists()) { - return true; - } - - // Is the ser file or any of the source files newer then the class files. - // firstly find the oldest of the two class files. - long classModificationTime = ejbImplentationClass.lastModified(); - if (homeImplementationClass.lastModified() < classModificationTime) { - classModificationTime = homeImplementationClass.lastModified(); - } - if (beanStubClass.lastModified() < classModificationTime) { - classModificationTime = beanStubClass.lastModified(); - } - - if (descriptorFile.lastModified() > classModificationTime - || homeInterfaceSource.lastModified() > classModificationTime - || remoteInterfaceSource.lastModified() > classModificationTime) { - return true; - } - - if (primaryKeyClassSource != null - && primaryKeyClassSource.lastModified() > classModificationTime) { - return true; - } - } catch (Throwable descriptorLoadException) { - System.out.println("Exception occurred reading " - + descriptorFile.getName() + " - continuing"); - // any problems - just regenerate - return true; - } finally { - if (fis != null) { - fis.close(); - } - } - - return false; - } - - /** - * Process the descriptors in turn generating support classes for each and a manifest - * file for all of the beans. - */ - private void process() throws Exception { - String manifest = "Manifest-Version: 1.0\n\n"; - for (int i = 0; i < descriptors.length; ++i) { - String descriptorName = descriptors[i]; - File descriptorFile = new File(descriptorDirectory, descriptorName); - - if (isRegenRequired(descriptorFile)) { - System.out.println("Running ejbc for " + descriptorFile.getName()); - regenerateSupportClasses(descriptorFile); - } else { - System.out.println(descriptorFile.getName() + " is up to date"); - } - manifest += "Name: " + descriptorName.replace('\\', '/') - + "\nEnterprise-Bean: True\n\n"; - } - - FileWriter fw = new FileWriter(manifestFile); - PrintWriter pw = new PrintWriter(fw); - pw.print(manifest); - fw.flush(); - fw.close(); - } - - /** - * Perform the weblogic.ejbc call to regenerate the support classes. - * - * Note that this method relies on an undocumented -noexit option to the - * ejbc tool to stop the ejbc tool exiting the VM altogether. - */ - private void regenerateSupportClasses(File descriptorFile) throws Exception { - // create a Java task to do the rebuild - - - String[] args = getCommandLine(false, descriptorFile); - - try { - weblogic.ejbc.main(args); - } catch (Exception e) { - // run with no exit for better reporting - String[] newArgs = getCommandLine(true, descriptorFile); - weblogic.ejbc.main(newArgs); - } - } -} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java deleted file mode 100644 index 7e397a103..000000000 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLRun.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * 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.ejb; - - -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; - -/** - * Starts a WebLogic server. - * A number of parameters are used to control the operation of the weblogic - * instance. Note that the task, and hence ant, will not complete until the - * weblogic instance is stopped.

- * - */ -public class WLRun extends Task { - protected static final String DEFAULT_WL51_POLICY_FILE = "weblogic.policy"; - protected static final String DEFAULT_WL60_POLICY_FILE = "lib/weblogic.policy"; - protected static final String DEFAULT_PROPERTIES_FILE = "weblogic.properties"; - - /** - * The classpath to be used when running the Java VM. It must contain the - * weblogic classes and the implementation classes of the home and - * remote interfaces. - */ - private Path classpath; - - /** - * The weblogic classpath to the be used when running weblogic. - */ - private Path weblogicClasspath; - - private String weblogicMainClass = "weblogic.Server"; - - /** - * Addional arguments to pass to the JVM used to run weblogic - */ - private String additionalArgs = ""; - - /** - * The security policy to use when running the weblogic server - */ - private String securityPolicy; - - /** - * The weblogic system home directory - */ - private File weblogicSystemHome; - - /** - * The weblogic domain - */ - private String weblogicDomainName; - - /** - * The name of the weblogic server - used to select the server's directory in the - * weblogic home directory. - */ - private String weblogicSystemName = "myserver"; - - /** - * The file containing the weblogic properties for this server. - */ - private String weblogicPropertiesFile = null; - - /** - * additional args to pass to the spawned jvm - */ - private String additionalJvmArgs = ""; - - /** - * The location of the BEA Home under which this server is run. - * WL6 only - */ - private File beaHome = null; - - /** - * The management username - */ - private String managementUsername = "system"; - - /** - * The management password - */ - private String managementPassword = null; - - /** - * The provate key password - used for SSL - */ - private String pkPassword = null; - - /** - * Add the classpath for the user classes - * @return a path to be configured - */ - public Path createClasspath() { - if (classpath == null) { - classpath = new Path(getProject()); - } - return classpath.createPath(); - } - - /** - * Get the classpath to the weblogic classpaths - * @return a path to be configured - */ - public Path createWLClasspath() { - if (weblogicClasspath == null) { - weblogicClasspath = new Path(getProject()); - } - return weblogicClasspath.createPath(); - } - - /** - * Do the work. - * - * The work is actually done by creating a separate JVM to run a helper task. - * This approach allows the classpath of the helper task to be set. Since the - * weblogic tools require the class files of the project's home and remote - * interfaces to be available in the classpath, this also avoids having to - * start ant with the class path of the project it is building. - * - * @exception BuildException if someting goes wrong with the build - */ - public void execute() throws BuildException { - if (weblogicSystemHome == null) { - throw new BuildException("weblogic home must be set"); - } - if (!weblogicSystemHome.isDirectory()) { - throw new BuildException("weblogic home directory " - + weblogicSystemHome.getPath() + " is not valid"); - } - - if (beaHome != null) { - executeWLS6(); - } else { - executeWLS(); - } - } - - private File findSecurityPolicyFile(String defaultSecurityPolicy) { - String securityPolicy = this.securityPolicy; - if (securityPolicy == null) { - securityPolicy = defaultSecurityPolicy; - } - File securityPolicyFile = new File(weblogicSystemHome, securityPolicy); - // If an explicit securityPolicy file was specified, it maybe an - // absolute path. Use the project to resolve it. - if (this.securityPolicy != null && !securityPolicyFile.exists()) { - securityPolicyFile = getProject().resolveFile(securityPolicy); - } - // If we still can't find it, complain - if (!securityPolicyFile.exists()) { - throw new BuildException("Security policy " + securityPolicy - + " was not found."); - } - return securityPolicyFile; - } - - private void executeWLS6() { - File securityPolicyFile - = findSecurityPolicyFile(DEFAULT_WL60_POLICY_FILE); - if (!beaHome.isDirectory()) { - throw new BuildException("BEA home " + beaHome.getPath() - + " is not valid"); - } - - File configFile = new File(weblogicSystemHome, "config/" - + weblogicDomainName + "/config.xml"); - if (!configFile.exists()) { - throw new BuildException("Server config file " + configFile - + " not found."); - } - - if (managementPassword == null) { - throw new BuildException("You must supply a management password " - + "to start the server"); - } - - Java weblogicServer = new Java(this); - weblogicServer.setTaskName(getTaskName()); - weblogicServer.setFork(true); - weblogicServer.setDir(weblogicSystemHome); - weblogicServer.setClassname(weblogicMainClass); - - String jvmArgs = additionalJvmArgs; - - jvmArgs += " -Dweblogic.Domain=" + weblogicDomainName; - jvmArgs += " -Dweblogic.Name=" + weblogicSystemName; - jvmArgs += " -Dweblogic.system.home=" + weblogicSystemHome; - - jvmArgs += " -Dbea.home=" + beaHome; - jvmArgs += " -Djava.security.policy==" + securityPolicyFile; - - jvmArgs += " -Dweblogic.management.username=" + managementUsername; - jvmArgs += " -Dweblogic.management.password=" + managementPassword; - if (pkPassword != null) { - jvmArgs += " -Dweblogic.pkpassword=" + pkPassword; - } - - - weblogicServer.createJvmarg().setLine(jvmArgs); - weblogicServer.createArg().setLine(additionalArgs); - - if (classpath != null) { - weblogicServer.setClasspath(classpath); - } - - if (weblogicServer.executeJava() != 0) { - throw new BuildException("Execution of weblogic server failed"); - } - } - - private void executeWLS() { - File securityPolicyFile - = findSecurityPolicyFile(DEFAULT_WL51_POLICY_FILE); - File propertiesFile = null; - - - if (weblogicPropertiesFile == null) { - weblogicPropertiesFile = DEFAULT_PROPERTIES_FILE; - } - propertiesFile = new File(weblogicSystemHome, weblogicPropertiesFile); - if (!propertiesFile.exists()) { - // OK, properties file may be absolute - propertiesFile = getProject().resolveFile(weblogicPropertiesFile); - if (!propertiesFile.exists()) { - throw new BuildException("Properties file " - + weblogicPropertiesFile - + " not found in weblogic home " + weblogicSystemHome - + " or as absolute file"); - } - } - - Java weblogicServer = new Java(this); - weblogicServer.setFork(true); - weblogicServer.setClassname(weblogicMainClass); - - String jvmArgs = additionalJvmArgs; - - if (weblogicClasspath != null) { - jvmArgs += " -Dweblogic.class.path=" + weblogicClasspath; - } - - jvmArgs += " -Djava.security.manager -Djava.security.policy==" + securityPolicyFile; - jvmArgs += " -Dweblogic.system.home=" + weblogicSystemHome; - jvmArgs += " -Dweblogic.system.name=" + weblogicSystemName; - jvmArgs += " -Dweblogic.system.propertiesFile=" + weblogicPropertiesFile; - - weblogicServer.createJvmarg().setLine(jvmArgs); - weblogicServer.createArg().setLine(additionalArgs); - - if (classpath != null) { - weblogicServer.setClasspath(classpath); - } - if (weblogicServer.executeJava() != 0) { - throw new BuildException("Execution of weblogic server failed"); - } - } - - - /** - * The classpath to be used with the Java Virtual Machine that runs the Weblogic - * Server; required. Prior to Weblogic 6.0, this is typically set to the Weblogic - * boot classpath. Under Weblogic 6.0 this should include all the - * weblogic jars - * - * @param classpath the classpath to use when executing the weblogic server. - */ - public void setClasspath(Path classpath) { - this.classpath = classpath; - } - - /** - * Set the weblogic classpath used by the Weblogic Server; - * optional, and only applicable to WL4.5.1 - * - * The weblogic classpath is used by weblogic to support dynamic class loading. - * - * @param weblogicClasspath the weblogic classpath - */ - public void setWlclasspath(Path weblogicClasspath) { - this.weblogicClasspath = weblogicClasspath; - } - - /** - * The name of the security policy file within the weblogic home directory that - * is to be used. If not specified, the default policy file weblogic.policy - * is used. - * - * @param securityPolicy the security policy to use. - */ - public void setPolicy(String securityPolicy) { - this.securityPolicy = securityPolicy; - } - - /** - * The location where weblogic lives. - * Required. This is the absolute location, not relative to - * BEA home. - * @param weblogicHome the home directory of weblogic. - * - */ - public void setHome(File weblogicHome) { - weblogicSystemHome = weblogicHome; - } - - /** - * The location of the BEA Home; implicitly - * selects Weblogic 6.0; optional. - * - * @param beaHome the BEA Home directory. - * - */ - public void setBEAHome(File beaHome) { - this.beaHome = beaHome; - } - - /** - * The name of the weblogic server within the weblogic home which is to be run. - * Optiona, defaults to "myserver" - * - * @param serverName the name of the server. - */ - public void setName(String serverName) { - this.weblogicSystemName = serverName; - } - - /** - * Set the Domain to run in; required for WL6.0 - * - * @param domain the domain - */ - public void setDomain(String domain) { - this.weblogicDomainName = domain; - } - - /** - * The name of the server's properties file within the weblogic home directory - * used to control the weblogic instance; - * required for WL4.5.1 - * - * - * @param propertiesFilename the properties file name - */ - public void setProperties(String propertiesFilename) { - this.weblogicPropertiesFile = propertiesFilename; - } - - /** - * Set the additional arguments to pass to the weblogic JVM - * @param args the arguments to be passed to the JVM - */ - public void setJvmargs(String args) { - this.additionalJvmArgs = args; - } - - /** - * Set the management username to run the server; - * optional and only applicable to WL6.0. - * - * @param username the management username of the server. - */ - public void setUsername(String username) { - this.managementUsername = username; - } - - - /** - * Set the management password of the server; - * optional and only applicable to WL6.0. - * @param password the management pasword of the server. - */ - public void setPassword(String password) { - this.managementPassword = password; - } - - /** - * Set the private key password so the server can decrypt the SSL private key file; - * optional and only applicable to WL6.0. - * @param pkpassword the private key password, - */ - public void setPKPassword(String pkpassword) { - this.pkPassword = pkpassword; - } - - /** - * Additional argument string passed to the Weblogic instance; - * optional. - * @param args the argument string - */ - public void setArgs(String args) { - additionalArgs = args; - } - - /** - * name of the main class for weblogic; optional. - * @param c the name of the class - */ - public void setWeblogicMainClass(String c) { - weblogicMainClass = c; - } -} diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java deleted file mode 100644 index 3ebe8e7b3..000000000 --- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/WLStop.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * 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.ejb; - - -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; - -/** - * Shuts down a WebLogic server. - * To shut down an instance you must supply both a username and - * a password. - * - */ -public class WLStop extends Task { - /** - * The classpath to be used. It must contains the weblogic.Admin class. - */ - private Path classpath; - - /** - * The weblogic username to use to request the shutdown. - */ - private String username; - - /** - * The password to use to shutdown the weblogic server. - */ - private String password; - - /** - * The URL which the weblogic server is listening on. - */ - private String serverURL; - - /** - * The delay (in seconds) to wait before shutting down. - */ - private int delay = 0; - - /** - * The location of the BEA Home under which this server is run. - * WL6 only - */ - private File beaHome = null; - - /** - * Do the work. - * - * The work is actually done by creating a separate JVM to run the weblogic admin task - * This approach allows the classpath of the helper task to be set. - * - * @exception BuildException if someting goes wrong with the build - */ - public void execute() throws BuildException { - if (username == null || password == null) { - throw new BuildException("weblogic username and password must both be set"); - } - - if (serverURL == null) { - throw new BuildException("The url of the weblogic server must be provided."); - } - - Java weblogicAdmin = new Java(this); - weblogicAdmin.setFork(true); - weblogicAdmin.setClassname("weblogic.Admin"); - String args; - - if (beaHome == null) { - args = serverURL + " SHUTDOWN " + username + " " + password + " " + delay; - } else { - args = " -url " + serverURL - + " -username " + username - + " -password " + password - + " SHUTDOWN " + " " + delay; - } - - weblogicAdmin.createArg().setLine(args); - weblogicAdmin.setClasspath(classpath); - weblogicAdmin.execute(); - } - - /** - * The classpath to be used with the Java Virtual Machine that runs the Weblogic - * Shutdown command; - * - * @param path the classpath to use when executing the weblogic admin task. - */ - public void setClasspath(Path path) { - this.classpath = path; - } - - /** - * The classpath to be used with the Java Virtual Machine that runs the Weblogic - * Shutdown command; - * @return the path to be configured. - */ - public Path createClasspath() { - if (classpath == null) { - classpath = new Path(getProject()); - } - return classpath.createPath(); - } - - /** - * The username of the account which will be used to shutdown the server; - * required. - * - * @param s the username. - */ - public void setUser(String s) { - this.username = s; - } - - /** - * The password for the account specified in the - * user parameter; required - * - * @param s the password. - */ - public void setPassword(String s) { - this.password = s; - } - - /** - * Set the URL to which the weblogic server is listening - * for T3 connections; required. - * - * @param s the url. - */ - public void setUrl(String s) { - this.serverURL = s; - } - - - /** - * Set the delay (in seconds) before shutting down the server; - * optional. - * - * @param s the selay. - */ - public void setDelay(String s) { - delay = Integer.parseInt(s); - } - - /** - * The location of the BEA Home; implicitly - * selects Weblogic 6.0 shutdown; optional. - * - * @param beaHome the BEA Home directory. - * - */ - public void setBEAHome(File beaHome) { - this.beaHome = beaHome; - } - -}