【问题标题】:How to provide Date parameters via JConsole to MBean (in spring)如何通过 JConsole 向 MBean 提供日期参数(春季)
【发布时间】:2013-11-07 09:33:19
【问题描述】:

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

【问题讨论】:

    标签: jmx spring-jmx


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多