如何以编程方式(java)获取JBoss信息并进行管理?

时间:2013-09-26 17:18:44

标签: java jboss

您好我想从JBoss的java类信息中获取状态和版本,然后通过启动/停止/重新绑定他来管理他。 对于版本我这样做:

String fileSeparator = System.getProperty("file.separator");

        String runJarFile = jbossHomeDir + fileSeparator + "bin" + fileSeparator + "run.jar";
        System.out.println("JBOSSDIR est :" + runJarFile);

        jarInputStream = new JarInputStream(new FileInputStream(runJarFile));

        System.out.println("Pigmalion" + jarInputStream.getNextEntry().getName());

        Manifest manifest = jarInputStream.getManifest();
        Attributes attributes = manifest.getMainAttributes();

        jbossVersion = attributes.getValue(Attributes.Name.SPECIFICATION_VERSION);

哪个工作正常,现在是状态,我看到有些人通过检查端口来做这个,但是不是有另一种方法吗?

至于启动/停止/重启命令,我看到了这个脚本

package com.sudipta.jboss.conf;

import org.jboss.Main;

public class JbossOperation {
    public static Main ob;
    static Class jbossMain;
    static{
        try {
            jbossMain=Class.forName("org.jboss.Main");
            ob = (Main)jbossMain.newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

    }

/**
 * START JBOSS SERVER
 * @return true if started successfully
 */
public static boolean startServer(){
    boolean status=true;

    String str[]={"-c","default"};            
    try {
        ob.boot(str);

    } catch (Exception e) {            
        e.printStackTrace();
        return false;
    }        
    return status;
}

/**
 * STOP JBOSS SERVER
 * @return true if started successfully
 */
public static boolean stopServer(){
    boolean status=true;        
    try {
        ob.shutdown();            
    } catch (Throwable e) {            
        e.printStackTrace();
    }                

    return status;
}

/**
 * Main method
 * @param args
 */
public static void main(String args[]){
    System.out.println("---------------------Strating the server------------------");
    startServer();
    System.out.println("---------------------Stoping the server------------------");
    stopServer();
    System.out.println("---------------------SERVER STOPPED------------------");
}

}

我下载了jboss-system 4.0.2 jar,它告诉我shutdown方法不存在。我必须下载其他jboss罐吗?

2 个答案:

答案 0 :(得分:0)

如果您正在寻找更有进取心的东西(但仍然是开源的)。您可能希望使用RHQ。它允许在托管资源上运行操作,它可以启动/重启/停止JBoss服务器,为它部署战争等等。但学习曲线可能非常陡峭。

答案 1 :(得分:0)

您是否考虑过使用JMX控制台?此外,如果您确实需要从Java程序管理服务器,您可以编写一个JMX客户端来调用特定的服务器操作,如shutdown。另外,可以通过这种方式获得不同种类的服务器信息。 (当然JMX对启动服务器没用)。