Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.1.5, 2.2.1
-
Security Level: public (Regular issues)
-
None
Description
In a java client where MBeanServerConnection is created and invoke startSnapshot method in Monitoring Portlet of G 215, Stat Query snapshot started but we can also find ClassCastException.
...
ERROR [MasterRemoteControlJMX] org.tranql.connector.jdbc.TranqlDataSource$SelfReference incompatible with javax.sql.DataSource
java.lang.ClassCastException: org.tranql.connector.jdbc.TranqlDataSource$SelfReference incompatible with javax.sql.DataSource
at org.apache.geronimo.monitoring.MasterRemoteControlJMX.<init>(MasterRemoteControlJMX.java:110)
at org.apache.geronimo.monitoring.snapshot.SnapshotProcessor.getMRC(SnapshotProcessor.java:148)
at org.apache.geronimo.monitoring.snapshot.SnapshotProcessor.takeSnapshot(SnapshotProcessor.java:59)
at org.apache.geronimo.monitoring.snapshot.SnapshotThread.run(SnapshotThread.java:103)
...
In G 214, this exception does not come while using same java client.
These steps are followed in java client:
1.Creating MBeanServerConnection object
...
MBeanServerConnection mbServerConn;
JMXServiceURL serviceURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost/JMXConnector");
Hashtable<String, Object> env = new Hashtable<String, Object>();
String[] credentials = new String[2];
credentials[0] = "system";
credentials[1] = "manager";
env.put(JMXConnector.CREDENTIALS, credentials);
JMXConnector connector = JMXConnectorFactory.connect(serviceURL, env);
mbServerConn = connector.getMBeanServerConnection();
..
2. Retrieving the mbean name to the agent-car-jmx plugin
..
if(PATH == null) {
Set<ObjectName> mbeanNames = mbServerConn.queryNames(new ObjectName(":name=MasterRemoteControlJMX,"), null);
for(Iterator<ObjectName> it = mbeanNames.iterator(); it.hasNext(); ) {
String mbeanName = ((ObjectName)it.next()).getCanonicalName();
if(mbeanName.contains("agent-car-jmx") && mbeanName.contains("MasterRemoteControlJMX") && mbeanName.contains("GBean"))
if(PATH == null)
{ throw new Exception("[ERROR] Required mbean not found: agent-car-jmx"); }}..
Here I am getting mbean name as "geronimo:J2EEServer=geronimo,ServiceModule=org.apache.geronimo.plugins.monitoring/agent-car-jmx/2.1.5/car,j2eeType=GBean,name=MasterRemoteControlJMX"
3. Invoking startSnapshot
..
long time = 300000;
int days = 2;
mbServerConn.invoke(new ObjectName(PATH),"startSnapshot", new Object[]
, new String[]
{ "java.lang.Long", "java.lang.Integer" });
..