ClassCastException while starting snapshot (Stat Query) in G 215 Monitoring
portlet through java client
-------------------------------------------------------------------------------------------------------
Key: GERONIMO-5355
URL: https://issues.apache.org/jira/browse/GERONIMO-5355
Project: Geronimo
Issue Type: Bug
Security Level: public (Regular issues)
Components: monitoring
Affects Versions: 2.1.5
Reporter: Amit Puri
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")) {
PATH = mbeanName;
break;
}}
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[] { time,
days }, new String[] { "java.lang.Long", "java.lang.Integer" });
..
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.