Weblogic6.1 Node Manager do *not* attempt to restart a Managed Server when its goes down or provide a mechanism where user can use some compand line tool to start the managed server using Node Manager. The following is the example code to start a managed server using nodemanager programmatically. This code when used in combination with script that detects when a server goes down (Example: SNMP management tools which get a trap when managed server goes down), will automate server restart when a problem occurs.
Tested with weblogic6.1SP4.
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import weblogic.management.MBeanHome;
import weblogic.management.configuration.ServerMBean;
/**
* This tools starts a managed server when node manager corresponding
* to that server is already running.
* Usage : StartManagedServer -adminurl <> -user <> -pass <> -domain <> -managedserver <>
*/
public class StartManagedServer {
public static void main(String[] args) {
ServerMBean serverMBean = null;
String url = "t3://localhost:7001";
String username = "system";
String password = "password";
String domain = "yourdomain";
String managedServer = "Server1";
int i = 0;
try {
for (; i < args.length; i++) {
if (args[i].equals("-adminurl"))
url = args[++i];
else if (args[i].equals("-user"))
username = args[++i];
else if (args[i].equals("-pass"))
password = args[++i];
else if (args[i].equals("-domain"))
domain = args[++i];
else if (args[i].equals("-managedserver"))
managedServer = args[++i];
}
} catch (ArrayIndexOutOfBoundsException aio) {
log("Missing value for arguement '" + args[--i] + "'");
log("Usage : StartManagedServer -adminurl <> -user <> -pass <> -domain <> -managedserver <>");
return;
}
try {
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
props.put(Context.PROVIDER_URL, url);
props.put(Context.SECURITY_PRINCIPAL, username);
props.put(Context.SECURITY_CREDENTIALS, password);
Context ctx = new InitialContext(props);
MBeanHome home = (MBeanHome) ctx.lookup("weblogic.management.adminhome");
serverMBean = (ServerMBean) home.getMBean(managedServer, "Server", domain);
} catch (Exception e) {
log("Exception in getting Admin home & serverMBean: " + e);
}
try {
log("Sending a start command to the AdminServer ...");
serverMBean.start();
} catch (weblogic.rmi.extensions.RemoteRuntimeException rre) {
//The java.io.Reader returned which is not serializable :-)
log("Ignorable Exception occured ...");
} catch (Exception e) {
//InsufficientConfigurationException?? Couldn't find JavaDocs for exception
//mentioned in javadocs.:-)
log("Unexpected exception: " + e);
return;
}
log("NodeManager initiated the server");
}
private static void log(String s) {
System.out.println(s);
}
}
|
Starting
weblogic7 Node Manager attempts to restart a Managed Server whose health state is "failed".
No comments:
Post a Comment