remote的话,可以用MBeanServer server = ManagementFactory.getPlatformMBeanServer();
红色部分需要用真实的用户名密码替代,一般可以读取配置拿到。String serverURL = "service:jmx:rmi:///jndi/rmi://localhost:1090/jmxrmi";
String username = null;
String password = null;
Map env = new HashMap();
if (username != null && password != null) {
String[] creds = new String[2];
creds[0] = username;
creds[1] = password;
env.put(JMXConnector.CREDENTIALS, creds);
}
JMXServiceURL url = new JMXServiceURL(serverURL);
JMXConnector jmxc = JMXConnectorFactory.connect(url, env);
// Remember to call jmxc.close() when you are done with server
// connection.
MBeanServerConnection server = jmxc.getMBeanServerConnection();
这里ObjectName mName 是你所想要用的Mbean的服务名。一般是 [包名]:service = [接口名]这种格式。ObjectName mName = new ObjectName("jboss.system:service=MainDeployer");
String [] params = {"file://C:/Tools/jboss-6.1.0.Final/server/default/deploy/TestSarEar.ear"};
String[] unDeploysig = { String.class.getName() };
server.invoke(mbeanName, "undeploy", params, unDeploysig);
twiddle.sh invoke "jboss.system:service=MainDeployer" undeploy file:///path/to/ProjectEAR.ear
可以参考:
http://stackoverflow.com/questions/3048435/how-do-i-stop-start-ejb-apps-in-jboss-6-0-from-the-command-line
https://community.jboss.org/wiki/Twiddle
用twiddle也可以查询JBoss当前的状态是否完全启动: