问题
I have a problem with MXBean custom types and I am not able to handle it. This is my java structure, that involves Map< enum, OtherThing>
attribute
PPV and its interface
public class PPV implements PPVMXBean {
public enum EnumPV {
PV1,
PV2;
}
public static Map<EnumPV, PV> list;
public Map<EnumPV, PV> getList() {
return list;
}
}
public interface PPVMXBean {
public Map<EnumPV, PV> getList();
}
PV and its interface
public class PV implements PVBean {
public enum EnumTP {
TP1,
TP2;
}
private Map<EnumTP, EnumP[]> mapP;
private Map<EnumTP, EnumP[]> mapC;
private Map<EnumTP, EnumP[]> mapT;
private Map<EnumTP, EnumP[]> mapV;
public Map<EnumTP, EnumP[]> getMapP() {
return mapP;
}
public Map<EnumTP, EnumP[]> getMapC() {
return mapC;
}
public Map<EnumTP, EnumP[]> getMapT() {
return mapT;
}
public Map<EnumTP, EnumP[]> getMapV() {
return mapV;
}
}
public interface PVBean {
public Map<EnumTP, EnumP[]> getMapP();
public Map<EnumTP, EnumP[]> getMapC();
public Map<EnumTP, EnumP[]> getMapT();
public Map<EnumTP, EnumP[]> getMapV();
}
EnumP
public enum EnumP {
P1(1),
P2(2);
private int p;
EnumP (int pAux) {
p = pAux;
}
public int getP() {
return p;
}
}
With all of this, I get:
...
Caused by: javax.management.NotCompliantMBeanException: com.example.PPVMXBean: Method com.example.PPVMXBean.getLista has parameter or return type that cannot be translated into an open type
...
Caused by: java.lang.IllegalArgumentException: Method com.example.PPVMXBean.getLista has parameter or return type that cannot be translated into an open type
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: java.util.Map<com.example.PPV$EnumPV, com.examplePV>
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: class com.example.PV
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: java.lang.Class<?>
...
Caused by: javax.management.openmbean.OpenDataException: Cannot convert type: java.lang.Class<?>
What am I doing wrong? Where is the problem?
回答1:
When you write:
public interface PVBean {
public Map<EnumTP, EnumP[]> getMapP();
public Map<EnumTP, EnumP[]> getMapC();
public Map<EnumTP, EnumP[]> getMapT();
public Map<EnumTP, EnumP[]> getMapV();
}
... how is EnumTP in scope?
来源:https://stackoverflow.com/questions/25399520/jxm-mxbean-custom-attributes