0

I am trying to register a bean on JMX. I am getting error on line mbs.registerMBean(metadataObj, name);. Error says

Multiple markers at this line
    - Syntax error on token "(", delete 
     this token
    - Syntax error on token ")", delete 
     this token

I have no idea what it is about.

This bean has basic metadata about request start/end time. Class

    package test.performance;

public class RequestPerformanceMetadata implements PerformanceMetadataMBean{

    private double startTime;
    private double endTime;
    private double timeTook;
    private String requestType;
    private int numOfRequests;

    PerformanceMetadataMBean metadataObj = new RequestPerformanceMetadata();

    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = new ObjectName("test.performace:type=PerformanceMetadataMBean");      

    mbs.registerMBean(metadataObj, name);

    public double getTimeTook() {
        return timeTook;
    }
    public void setTimeTook(double timeTook) {
        this.timeTook = timeTook;
    }

Interface

package test.performance;

public interface PerformanceMetadataMBean {

    double getTimeTook();
    void setTimeTook(double timeTook);
    String getRequestType();
    void setRequestType(String requestType);

On

4

1 回答 1

1

这里有很多问题。

msb = ....开始,没有方法.... 它需要在方法中。接下来,new ObjectName(...)抛出一个异常,所以你需要将它包装在一个 try/catch 块中。另外,您确定要在RequestPerformanceMetadata创建另一个RequestPerformanceMetadata实例吗?也许您想简单地注册这个实例。

看看这个代码片段:

class RequestPerformanceMetadata implements PerformanceMetadataMBean {
    private double startTime;
    private double endTime;
    private double timeTook;
    private String requestType;
    private int numOfRequests;
    private MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    private ObjectName name;

    public RequestPerformanceMetadata() {
        try {
            name = new ObjectName("test.performace:type=PerformanceMetadataMBean"); 
            mbs.registerMBean(this, name);     
        } catch (Exception ex) {
            throw new RuntimeException("Yo dog. Bad object name", ex);
        }       
    }    
   //........... snip ...........
}
于 2013-04-24T14:27:45.823 回答