我有一个作为 JMX 托管 bean 公开的 Spring bean。使用 JConsole,我可以调用方法(托管操作)并传递原始类型的输入参数以及字符串值。但无法传递日期类型的输入参数。谁能帮我理解如何传递 Date 类型的参数?
问问题
2528 次
1 回答
2
您有 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
毫无问题地传递 a。
于 2013-11-09T13:55:32.463 回答