http://jira.hyperic.com/browse/HHQ-4311
I defined two JDBC Providers
Name: DB2 UDB for iSeries (Toolbox)
Scope: Cell=jvalkealahti-e6500Node01Cell
Name: DB2 UDB for iSeries (Toolbox) 2
Scope: Node=jvalkealahti-e6500Node01,Server=server1
Below query is used to find the providers(testing using wsadmin):
wsadmin>$AdminControl queryNames WebSphere:type=JDBCProvider,process=server1,node=jvalkealahti-e6500Node01,*
"WebSphere:name=DB2 UDB for iSeries (Toolbox) 2,process=server1,platform=dynamicproxy,node=jvalkealahti-e6500Node01,j2eeType=JDBCResource,J2EEServer=server1,Server=server1,version=6.1.0.31,type=JDBCProvider,mbeanIdentifier=cells/jvalkealahti-e6500Node01Cell/nodes/jvalkealahti-e6500Node01/servers/server1/resources.xml#JDBCProvider_1284720274816,cell=jvalkealahti-e6500Node01Cell,spec=1.0"
"WebSphere:name=DB2 UDB for iSeries (Toolbox),process=server1,platform=dynamicproxy,node=jvalkealahti-e6500Node01,j2eeType=JDBCResource,J2EEServer=server1,Server=server1,version=6.1.0.31,type=JDBCProvider,mbeanIdentifier=cells/jvalkealahti-e6500Node01Cell/resources.xml#JDBCProvider_1284719944232,cell=jvalkealahti-e6500Node01Cell,spec=1.0"
"WebSphere:name=Derby JDBC Provider (XA),process=server1,platform=dynamicproxy,node=jvalkealahti-e6500Node01,j2eeType=JDBCResource,J2EEServer=server1,Server=server1,version=6.1.0.31,type=JDBCProvider,mbeanIdentifier=cells/jvalkealahti-e6500Node01Cell/nodes/jvalkealahti-e6500Node01/servers/server1/resources.xml#builtin_jdbcprovider,cell=jvalkealahti-e6500Node01Cell,spec=1.0"
"WebSphere:name=Derby JDBC Provider (XA),process=server1,platform=dynamicproxy,node=jvalkealahti-e6500Node01,j2eeType=JDBCResource,J2EEServer=server1,Server=server1,version=6.1.0.31,type=JDBCProvider,mbeanIdentifier=cells/jvalkealahti-e6500Node01Cell/resources.xml#builtin_jdbcprovider,cell=jvalkealahti-e6500Node01Cell,spec=1.0"
"WebSphere:name=Derby JDBC Provider,process=server1,platform=dynamicproxy,node=jvalkealahti-e6500Node01,j2eeType=JDBCResource,J2EEServer=server1,Server=server1,version=6.1.0.31,type=JDBCProvider,mbeanIdentifier=cells/jvalkealahti-e6500Node01Cell/nodes/jvalkealahti-e6500Node01/servers/server1/resources.xml#JDBCProvider_1284588046356,cell=jvalkealahti-e6500Node01Cell,spec=1.0"
"WebSphere:name=Samples Derby JDBC Provider (XA),process=server1,platform=dynamicproxy,node=jvalkealahti-e6500Node01,j2eeType=JDBCResource,J2EEServer=server1,Server=server1,version=6.1.0.31,type=JDBCProvider,mbeanIdentifier=cells/jvalkealahti-e6500Node01Cell/nodes/jvalkealahti-e6500Node01/servers/server1/resources.xml#JDBCProvider_1284588062152,cell=jvalkealahti-e6500Node01Cell,spec=1.0"
JDBCProviderQuery is using this check agains the results:
public boolean apply(ObjectName name) {
String server = name.getKeyProperty("Server");
String id = name.getKeyProperty("mbeanIdentifier");
if ((server == null) || (id == null)) {
return super.apply(name);
}
else {
return id.indexOf(server) != -1;
}
}
There's also comment in ConnectionPoolCollector:
//XXX seen in samples, two beans where all attributes are equal
//with the exception of mbeanIdentifier
"server1" is checked from mbeanIdentifier which fails because it's not there(because it's on cell level).
Indeed we can have provider with same name if one is in cell level and other in node/server level. WAS admin console allows you to create providers with same name even with same scope. So we need to find a way to detect this stuff without having duplicates.
Anonymous