- From: Benoit Mahe <Benoit.Mahe@sophia.inria.fr>
- Date: Thu, 25 Feb 1999 10:56:35 +0100
- To: Jigsaw Mailing List <www-jigsaw@w3.org>
- Message-ID: <36D51E53.98317F4F@sophia.inria.fr>
Here is a small tool that allows you to kill (and save!) Jigsaw without
JigAdmin.
Just put the JigKill.java file in Jigsaw/src/classes/org/w3c/jigsaw/admin/ and
compile it (javac JigKill.java).
Usage:
java org.w3c.jigsaw.admin.JigKill -u <username> -p <password> <admin server
url>
Regards, Benoit.
PS: this tool will be in the next distribution.
--
- Benoît Mahé -------------------------------------------------------
World Wide Web Consortium (W3C)
Architecture domain - Jigsaw Team
http://www.w3.org/People/Mahe - bmahe@w3.org - +33.4.92.38.79.89
---------------------------------------------------------------------
// JigKill.java
// $Id: JigKill.java,v 1.1 1999/02/18 10:16:47 bmahe Exp $
// (c) COPYRIGHT MIT, INRIA and Keio, 1999.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.jigsaw.admin;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.Vector;
import org.w3c.www.http.HttpCredential;
import org.w3c.www.http.HttpFactory;
import org.w3c.tools.codec.Base64Encoder;
/**
* Simple class used to kill (and save) Jigsaw.
* @version $Revision: 1.1 $
* @author Benoît Mahé (bmahe@w3.org)
*/
public class JigKill {
URL adminURL = null;
String username = null;
String password = null;
/**
* Usage description.
*/
protected static void usage() {
System.err.println("Usage:");
System.err.println("\tjava JigKill -u <username> -p <password> "+
"<admin server url>\n");
System.exit(-1);
}
/**
* Get all the server's ControlResource.
* @param admin the admin server (a RemoteResource)
* @return an array of RemoteResource
*/
protected RemoteResource[] getControls(RemoteResource admin)
throws RemoteAccessException
{
String names[] = admin.enumerateResourceIdentifiers();
Vector vcontrols = new Vector(2);
for (int i = 0 ; i < names.length ; i++) {
if ((! names[i].equals("control")) &&
(! names[i].equals("realms"))) {
RemoteResource srr = admin.loadResource(names[i]);
//load the control node
RemoteResource control = srr.loadResource("control");
vcontrols.addElement(control);
}
}
RemoteResource controls[] = new RemoteResource[vcontrols.size()];
vcontrols.copyInto(controls);
return controls;
}
/**
* Kill and save the configuration of the servers and the admin server
* @exception RemoteAccessException if any remote error occurs.
*/
protected void kill()
throws RemoteAccessException
{
AdminContext ctxt = new AdminContext(adminURL);
HttpCredential credential = HttpFactory.makeCredential("Basic");
Base64Encoder encoder = new Base64Encoder(username+":"+password);
credential.setAuthParameter("cookie", encoder.processString());
ctxt.setCredential(credential);
ctxt.initialize();
RemoteResource adminServer = ctxt.getAdminResource();
RemoteResource ctrls[] = getControls(adminServer);
//servers
for (int i = 0 ; i < ctrls.length ; i++) {
ctrls[i].loadResource("save");
ctrls[i].loadResource("stop");
}
//admin servers
RemoteResource ctrl = adminServer.loadResource("control");
ctrl.loadResource("save");
ctrl.loadResource("stop");
//done
}
/**
* Contructor.
* @param adminURL the admin server URL
* @param username the username
* @param password the password
*/
public JigKill(URL adminURL, String username, String password) {
this.adminURL = adminURL;
this.username = username;
this.password = password;
}
public static void main(String args[]) {
String username = null;
String password = null;
String url = null;
try {
for (int i = 0 ; i < args.length ; i++) {
if (args[i].equals("-u")) {
username = args[++i];
} else if (args[i].equals("-p")) {
password = args[++i];
} else {
url = args[i];
}
}
} catch (Exception ex) {}
if ((username == null) || (password == null) || (url == null))
usage();
URL adminURL = null;
try {
adminURL = new URL(url);
} catch (MalformedURLException ex) {
System.err.println("Invalid URL : "+url);
System.exit(-1);
}
try {
(new JigKill(adminURL, username, password)).kill();
System.out.println("Servers killed.");
} catch (RemoteAccessException ex) {
String msg = ex.getMessage();
if (msg.equals("Unauthorized"))
System.err.println("Invalid username/password.");
else
System.err.println("Error : "+msg);
}
}
}
Received on Thursday, 25 February 1999 04:56:44 UTC