Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jmx 如何通过JConsole向MBean提供日期参数(在spring中)_Jmx_Spring Jmx - Fatal编程技术网

Jmx 如何通过JConsole向MBean提供日期参数(在spring中)

Jmx 如何通过JConsole向MBean提供日期参数(在spring中),jmx,spring-jmx,Jmx,Spring Jmx,我有一个Springbean,它作为JMX托管bean公开。使用JConsole,我可以调用方法(托管操作)并传递原语类型的输入参数和字符串值。但无法传递日期类型的输入参数。有人能帮我理解如何传递日期类型的参数吗?您有两个基本选择,再加上一些基本变体。假设您有这样一个简单的属性: import java.util.Date; import java.text.SimpleDateFormat; ....... public void setDate(Date date) { // Imp

我有一个Springbean,它作为JMX托管bean公开。使用JConsole,我可以调用方法(托管操作)并传递原语类型的输入参数和字符串值。但无法传递日期类型的输入参数。有人能帮我理解如何传递日期类型的参数吗?

您有两个基本选择,再加上一些基本变体。假设您有这样一个简单的属性:

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);
    }
}
public void setDate(long time) {
    setDate(new Date(time));
}
变体:使用标准格式

/** 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长的日期:

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);
    }
}
public void setDate(long time) {
    setDate(new Date(time));
}
请记住,这纯粹是JConsole限制。通过编程方式使用JMX,您可以传递
java.util.Date
,而不会出现问题