In
this article we will write a sample JMX client for connecting to the Weblogic
Instance. The following code gives us a start up in wiring more advanced scripts
for handling the Weblogic Instance.
Code
Here
is the Code for connecting to the Weblogic Instance running on a Local
host(Just change the details accordingly)
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXServiceURL;
import javax.management.remote.JMXConnectorFactory;
import java.util.Hashtable;
import java.util.Set;
public class JMXClient {
public static void main(String[] args) throws Exception {
JMXConnector
jmxCon = null;
try {
JMXServiceURL
serviceUrl =
new
JMXServiceURL(
"service:jmx:iiop://127.0.0.1:7001/jndi/weblogic.management.mbeanservers.runtime");
System.out.println("Connecting to: " + serviceUrl);
Hashtable env
= new Hashtable();
env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
env.put(javax.naming.Context.SECURITY_PRINCIPAL, "weblogic");
env.put(javax.naming.Context.SECURITY_CREDENTIALS,
"welcome1");
jmxCon =
JMXConnectorFactory.newJMXConnector(serviceUrl, env);
jmxCon.connect();
MBeanServerConnection con = jmxCon.getMBeanServerConnection();
Set<ObjectName> mbeans = con.queryNames(null, null);
for (ObjectName mbeanName : mbeans) {
System.out.println(mbeanName);
}
}
finally {
if (jmxCon !=
null)
jmxCon.close();
}
}
}
The Jmx URL is the important line the whole
code,
JMXServiceURL
serviceUrl = new JMXServiceURL(
"service:jmx:iiop://127.0.0.1:7001/jndi/weblogic.management.mbeanservers.runtime");
The
available Protocols that can be to connect to the remove machines are IIOP,T3,RMI.In
the above code we use IIOP to connect to the Weblogic Instance.
The
Port and IP details can be obtained from the config file if we don’t know . The
config file is located at WL_INSTANCE/config/config.xml file.
The
Server details are laid out as
<server>
<name>basrServer</name>
<listen-port>7001</listen-port>
<listen-address>Firsthost</listen-address>
</server>
Make
sure you get the correct details regarding the server. There are information in
the config.xml file that says about many servers configured.
The MBeanServer to connect to:
" weblogic.management.mbeanservers.runtime". This identifies
WebLogic's "Runtime" MBeanServer. This is the MBeanServer available
from any WebLogic process, and that contains both WebLogic and user MBeans.
Hashtable env = new Hashtable();
env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
env.put(javax.naming.Context.SECURITY_PRINCIPAL,
"weblogic");
env.put(javax.naming.Context.SECURITY_CREDENTIALS, "weblogic1");
The above code specifies
properties associated with the connection.
"weblogic.management.remote" identifies the package implementing
WebLogic's client side connector code. For instance the 't3' or 'iiop' client
connector.
"weblogic" and
"weblogic1" are the credentials associated with the user originating
the JMX connection.
The rest of the code says
about retrieving ObjectNames for the MBeans registered in the Runtime MBean
Server.These will be displayed on console
Compiling the Code
Since we don’t
have any Dependency with the weblogic files, the compilations goes fine.
Running the Code
For running
the code, we need some classes from the weblogic. Executing
the code requires to add WebLogic client side classes to the execution
ClassPath. We need to include the WebLogic JMX connector client side classes.
java –classpath
.:/root/Oracle/Middleware/wlserver_10.3/server/lib/wljmxclient.jar JMXClient
We can see a
lot of Objects being displayed on the console.
Hope This
sample code helps us to write more advanced jmx clients in accessing weblogic.
More To Come
, Happy Learning J