如何通过JConsole向MBean提供Date参数(在春季)

时间:2013-11-07 09:33:19

标签: jmx spring-jmx

我有一个Spring bean,它作为JMX托管bean公开。使用JConsole我可以调用方法(托管操作)并传递基本类型的输入参数以及String值。但是无法传递日期类型的输入参数。任何人都可以帮助我理解如何传递Date类型的参数吗?

1 个答案:

答案 0 :(得分:1)

您有2个基本选择,以及一些基本变体。假设你有一个像这样的简单属性:

import java.util.Date;
import java.text.SimpleDateFormat;
.......
public void setDate(Date date) {
    // Implement date function here
}

您公开的JMX方法(可以通过JConsole调用)将在内部创建日期并委托给上述方法:

将日期作为字符串传递,格式为解析为:

public void setDate(String format, String date) {
    try {
        setDate(new SimpleDateFormat(format).parse(date));
    } catch (ParseException e) {
        throw new RuntimeException("Failed to parse date [" + date + "] with expected format [" + format + "]", e);
    }
}

变体:使用标准格式

/** The standard date format to pass dates as  */
public static final String STD_FORMAT = "yyy-MM-dd";

public void setDate(String date) {
    try {
        setDate(new SimpleDateFormat(STD_FORMAT).parse(date));
    } catch (ParseException e) {
        throw new RuntimeException("Failed to parse date [" + date + "] with expected format [" + STD_FORMAT + "]", e);
    }       
}

将日期传递为UDT Long:

public void setDate(long time) {
    setDate(new Date(time));
}

请记住,这纯粹是JConsole的限制。以编程方式使用JMX,您可以毫无问题地传递java.util.Date