Access WebSphere Variables in J2EE Applications

Accessing WebSphere Variables from inside your J2EE application isn't as easy as it looks. They're not environment variables or system properties, but a portion of the WebSphere configuration that is used by the WebSphere Application Server Runtime.

You can access these variables by invoking an operation on "AdminOperations" MBean as follows:

try
{
    AdminService adminService = AdminServiceFactory.getAdminService();
    ObjectName queryName = new ObjectName( "WebSphere:*,type=AdminOperations" );
    Set objs = adminService.queryNames( queryName, null );
    if ( !objs.isEmpty() )
    {
        ObjectName thisObj = (ObjectName)objs.iterator().next();
        String opName = "expandVariable";
        String signature[] = { "java.lang.String" };
        String params[] = { "${VARIABLE_NAME}" } ;
        Object retVal = adminService.invoke( thisObj, opName, params, signature );
        System.out.println( retVal );
    }
} catch (MalformedObjectNameException e) {
    e.printStackTrace();
} catch (InstanceNotFoundException e) {
    e.printStackTrace();
} catch (MBeanException e) {
    e.printStackTrace();
} catch (ReflectionException e) {
    e.printStackTrace();
} 

This code will only work from an application running inside the server.

blog comments powered by Disqus