Code:
import java.util.*;
import javax.management.*;
import javax.management.remote.*;
public class JMXVHost
{
public static class AppConextName
{
String vhostName = "_defaultVHost_";
String appName = "_defapp_";
String appInstName = "_definst_";
public AppConextName(String fullname)
{
int qloc = fullname.indexOf(":");
if (qloc >= 0)
{
vhostName = fullname.substring(0, qloc);
fullname = fullname.substring(qloc+1);
}
appName = fullname;
int sloc = fullname.indexOf("/");
if (sloc >= 0)
{
appName = fullname.substring(0, qloc);
appInstName = fullname.substring(qloc+1);
}
}
}
public static void main(String[] args)
{
String username = "admin";
String password = "admin";
String jmxURL = "service:jmx:rmi://localhost:8084/jndi/rmi://localhost:8085/jmxrmi";
try
{
// create a connection URL
JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);
// create a environment hash with username and password
Map<String, Object> env = new HashMap<String, Object>();
String[] creds = {username, password};
env.put(JMXConnector.CREDENTIALS, creds);
// connect to the server
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, env);
MBeanServerConnection connection = connector.getMBeanServerConnection();
// Call start/stop vhost through the Server object
if (args[0].equals("startVHost"))
{
String connectsName = "WowzaMediaServerPro:name=Server";
ObjectName connectsObjName = new ObjectName(connectsName);
System.out.println(args[0]+" "+args[1]);
Object[] arguments = {args[1]};
String[] signature = {"java.lang.String"};
connection.invoke(connectsObjName, "startVHost", arguments, signature);
}
else if (args[0].equals("stopVHost"))
{
String connectsName = "WowzaMediaServerPro:name=Server";
ObjectName connectsObjName = new ObjectName(connectsName);
System.out.println(args[0]+" "+args[1]);
Object[] arguments = {args[1]};
String[] signature = {"java.lang.String"};
connection.invoke(connectsObjName, "stopVHost", arguments, signature);
}
else if (args[0].equals("reloadVHostConfig"))
{
String connectsName = "WowzaMediaServerPro:name=Server";
ObjectName connectsObjName = new ObjectName(connectsName);
System.out.println(args[0]);
Object[] arguments = {};
String[] signature = {};
connection.invoke(connectsObjName, "reloadVHostConfig", null, null);
}
else if (args[0].equals("startAppInstance"))
{
System.out.println(args[0]+" "+args[1]);
AppConextName context = new AppConextName(args[1]);
String connectsName = "WowzaMediaServerPro:vHosts=VHosts,vHostName="+context.vhostName+",name=VHost";
ObjectName connectsObjName = new ObjectName(connectsName);
Object[] arguments = {context.appName, context.appInstName};
String[] signature = {"java.lang.String", "java.lang.String"};
connection.invoke(connectsObjName, "startApplicationInstance", arguments, signature);
}
else if (args[0].equals("shutdownAppInstance"))
{
System.out.println(args[0]+" "+args[1]);
AppConextName context = new AppConextName(args[1]);
String connectsName = "WowzaMediaServerPro:vHosts=VHosts,vHostName="+context.vhostName+",applications=Applications,applicationName="+context.appName+",name=Application";
ObjectName connectsObjName = new ObjectName(connectsName);
Object[] arguments = {context.appInstName};
String[] signature = {"java.lang.String"};
connection.invoke(connectsObjName, "shutdownAppInstance", arguments, signature);
}
else if (args[0].equals("startMediaCasterStream"))
{
System.out.println(args[0]+" "+args[1]+" "+args[2]+" "+args[3]);
AppConextName context = new AppConextName(args[1]);
String connectsName = "WowzaMediaServerPro:vHosts=VHosts,vHostName="+context.vhostName+",applications=Applications,applicationName="+context.appName+",applicationInstances=ApplicationInstances,applicationInstanceName="+context.appInstName+",modules=Modules,module=ModuleMediaCasterStreamManager,name=Instance";
ObjectName connectsObjName = new ObjectName(connectsName);
Object[] arguments = {args[2], args[3]};
String[] signature = {"java.lang.String", "java.lang.String"};
connection.invoke(connectsObjName, "startMediaCasterStream", arguments, signature);
}
else if (args[0].equals("stopMediaCasterStream"))
{
System.out.println(args[0]+" "+args[1]+" "+args[2]);
AppConextName context = new AppConextName(args[1]);
String connectsName = "WowzaMediaServerPro:vHosts=VHosts,vHostName="+context.vhostName+",applications=Applications,applicationName="+context.appName+",applicationInstances=ApplicationInstances,applicationInstanceName="+context.appInstName+",modules=Modules,module=ModuleMediaCasterStreamManager,name=Instance";
ObjectName connectsObjName = new ObjectName(connectsName);
Object[] arguments = {args[2]};
String[] signature = {"java.lang.String"};
connection.invoke(connectsObjName, "stopMediaCasterStream", arguments, signature);
}
else
System.out.println("ERROR: Command not recognized: "+args[0]);
}
catch (Exception e)
{
System.out.println("ERROR: "+e.toString());
}
}
}
Compile using the command: