001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018: package org.apache.tools.ant.taskdefs.optional.ejb;
019:
020: import java.io.File;
021: import org.apache.tools.ant.BuildException;
022: import org.apache.tools.ant.Task;
023: import org.apache.tools.ant.taskdefs.Java;
024: import org.apache.tools.ant.types.Path;
025:
026: /**
027: * Shuts down a WebLogic server.
028: * To shut down an instance you must supply both a username and
029: * a password.
030: *
031: */
032: public class WLStop extends Task {
033: /**
034: * The classpath to be used. It must contains the weblogic.Admin class.
035: */
036: private Path classpath;
037:
038: /**
039: * The weblogic username to use to request the shutdown.
040: */
041: private String username;
042:
043: /**
044: * The password to use to shutdown the weblogic server.
045: */
046: private String password;
047:
048: /**
049: * The URL which the weblogic server is listening on.
050: */
051: private String serverURL;
052:
053: /**
054: * The delay (in seconds) to wait before shutting down.
055: */
056: private int delay = 0;
057:
058: /**
059: * The location of the BEA Home under which this server is run.
060: * WL6 only
061: */
062: private File beaHome = null;
063:
064: /**
065: * Do the work.
066: *
067: * The work is actually done by creating a separate JVM to run the weblogic admin task
068: * This approach allows the classpath of the helper task to be set.
069: *
070: * @exception BuildException if someting goes wrong with the build
071: */
072: public void execute() throws BuildException {
073: if (username == null || password == null) {
074: throw new BuildException(
075: "weblogic username and password must both be set");
076: }
077:
078: if (serverURL == null) {
079: throw new BuildException(
080: "The url of the weblogic server must be provided.");
081: }
082:
083: Java weblogicAdmin = new Java(this );
084: weblogicAdmin.setFork(true);
085: weblogicAdmin.setClassname("weblogic.Admin");
086: String args;
087:
088: if (beaHome == null) {
089: args = serverURL + " SHUTDOWN " + username + " " + password
090: + " " + delay;
091: } else {
092: args = " -url " + serverURL + " -username " + username
093: + " -password " + password + " SHUTDOWN " + " "
094: + delay;
095: }
096:
097: weblogicAdmin.createArg().setLine(args);
098: weblogicAdmin.setClasspath(classpath);
099: weblogicAdmin.execute();
100: }
101:
102: /**
103: * The classpath to be used with the Java Virtual Machine that runs the Weblogic
104: * Shutdown command;
105: *
106: * @param path the classpath to use when executing the weblogic admin task.
107: */
108: public void setClasspath(Path path) {
109: this .classpath = path;
110: }
111:
112: /**
113: * The classpath to be used with the Java Virtual Machine that runs the Weblogic
114: * Shutdown command;
115: * @return the path to be configured.
116: */
117: public Path createClasspath() {
118: if (classpath == null) {
119: classpath = new Path(getProject());
120: }
121: return classpath.createPath();
122: }
123:
124: /**
125: * The username of the account which will be used to shutdown the server;
126: * required.
127: *
128: * @param s the username.
129: */
130: public void setUser(String s) {
131: this .username = s;
132: }
133:
134: /**
135: * The password for the account specified in the
136: * user parameter; required
137: *
138: * @param s the password.
139: */
140: public void setPassword(String s) {
141: this .password = s;
142: }
143:
144: /**
145: * Set the URL to which the weblogic server is listening
146: * for T3 connections; required.
147: *
148: * @param s the url.
149: */
150: public void setUrl(String s) {
151: this .serverURL = s;
152: }
153:
154: /**
155: * Set the delay (in seconds) before shutting down the server;
156: * optional.
157: *
158: * @param s the selay.
159: */
160: public void setDelay(String s) {
161: delay = Integer.parseInt(s);
162: }
163:
164: /**
165: * The location of the BEA Home; implicitly
166: * selects Weblogic 6.0 shutdown; optional.
167: *
168: * @param beaHome the BEA Home directory.
169: *
170: */
171: public void setBEAHome(File beaHome) {
172: this.beaHome = beaHome;
173: }
174:
175: }
|