Listing 1

package com.hp.atc.mbeandemo;

public interface MyShoppingCartManagerMBean
{
    public String getName();
    public int getCartsCreatedCount();
    public int getCartsCompletedCount();
    public void addCart();
    public void closeCart();
}

Listing 2

package com.hp.atc.mbeandemo;

public class MyShoppingCartManager implements MyShoppingCartManagerMBean,
 java.io.Serializable
{
    private int cartsCompleted = 0;
    private int cartsCreated = 0;

    public MyShoppingCartManager() {
    }

    public String getName() {
        return "MyShoppingCartManager";
    }

    public int getCartsCreatedCount() {
        return cartsCreated;
    }
    
    public int getCartsCompletedCount() {
        return cartsCompleted;
    }

    public void addCart() {
        cartsCreated++;
    }
    
    public void closeCart() {
        cartsCompleted++;
    }
}

Listing 3

package com.hp.atc.mbeandemo;

import weblogic.common.*;
import java.util.*;
import javax.management.*;
import weblogic.management.*;

public class MyShoppingCartManagerStartup implements T3StartupDef
{
    private T3ServicesDef services;
    MyShoppingCartManager mbean = null;

    public MyShoppingCartManagerStartup() {
	   System.out.println("Creating MyShoppingCartManagerStartup class");
    }


    public String startup (String name, java.util.Hashtable args)
	                     throws Exception {
        String serverName = (String)args.get("ServerName");
        String mbeanName = (String)args.get("MBeanName");

        System.out.println("Instaniating and registering " + mbeanName);
        mbean = new MyShoppingCartManager();

        this.registerMbean((Object) mbean,mbeanName);
        return mbeanName + " registered with the MBean server";
    }


    public void setServices(T3ServicesDef services) {
       this.services = services;
    }


    private void registerMbean(Object mbeanObj, String mbeanName)
    {
        ObjectName objName = null;


        try {
            objName = new ObjectName(mbeanName);
	} catch (javax.management.MalformedObjectNameException mone) {
	  System.out.println("MalformedObjectNameException: " + mone);
        }


        // Register the custom MBean with the MBeanServer.
        try {
           MBeanHome home=Helper.getMBeanHome(MyShoppingCartConstants.username,
		         MyShoppingCartConstants.password,
				 MyShoppingCartConstants.wlServerHost,
				 MyShoppingCartConstants.wlServerName);
           RemoteMBeanServer rmbs = home.getMBeanServer();

            rmbs.registerMBean((Object)mbeanObj, objName);
            System.out.println("\n["+mbeanName+"]  MBean registered ...");

        } catch(InstanceAlreadyExistsException i) {
            System.out.println("MBean (" + objName + ") already exists");
        } catch(javax.management.MBeanRegistrationException mbre) {
            System.out.println("MBeanRegistrationException: " + mbre);
        } catch(javax.management.NotCompliantMBeanException ncme) {

            System.out.println("MBeanRegistrationException: " + ncme);
        }

    }
} 

Listing 4

  <StartupClass

Arguments="ServerName=dizzyAdmin,MBeanName=Dizzyworld:Name=MyShoppingCartManager"
  ClassName="com.hp.atc.mbeandemo.MyShoppingCartManagerStartup"
  FailureIsFatal="true" Name="MyShoppingCartStartup" Targets="dizzyAdmin"/>
    <Application Name="StartHtmlAdaptor"
	Path="C:\student\course_plat_develop\domains\dizzyworld\dizzyAdmin\upload"
	StagingMode="nostage" TwoPhase="true">
        <WebAppComponent Name="StartHtmlAdaptor" Targets="dizzyAdmin"
		URI="StartHtmlAdaptor.war"/>
    </Application>
</Domain>

Listing 5

// Code to invoke the ShoppingCart addCart() operation.
ObjectName objName = null;
try {
	objName = new ObjectName(MyShoppingCartConstants.mbeanName);
}
catch (javax.management.MalformedObjectNameException mone) {
System.out.println("MalformedObjectNameException: " + mone);
}
try {
	MBeanHome home=Helper.getMBeanHome(MyShoppingCartConstants.username,
	     	MyShoppingCartConstants.password,
			MyShoppingCartConstants.wlServerHost,
			MyShoppingCartConstants.wlServerName);
      	RemoteMBeanServer rmbs = home.getMBeanServer();
     	if (rmbs != null)
		rmbs.invoke(objName,"addCart",null,null);
        } catch (InstanceNotFoundException inf) {
		System.out.println("InstanceNotFoundException caught: " + inf);
        } catch (MBeanException mbe) {
		System.out.println("MBeanException caught: " + mbe);
        } catch (ReflectionException re) {
		System.out.println("ReflectionException caught: " + re);
	}
}

Listing 6

package com.hp.atc.mbeandemo;

public class MyShoppingCartConstants
{
   	// This will be the name of the MBean being registered.
    	public static String mbeanName = "workshop:Name=MyShoppingCartManager";

	// This will be the name of the WebLogic server instance and host/port
	 	public static String wlServerName = "cgServer";
    	public static String wlServerHost = "t3://localhost:7001";

	// This is the username and password associated with the admin for registration
	   	public static String username = "weblogic";
    	public static String password = "weblogic";    
}

Listing 7

import javax.management.*;
import weblogic.management.*;

public class MyShoppingCartMBeanHelper implements
 MyShoppingCartManagerMBean,java.io.Serializable
{
    	public void addCart() {
        // place code from Listing 5 here.
    	}

	public void closeCart() {
    	}

    	public int getCartsCreatedCount()  {
    	}

	public int getCartsCompletedCount() {
    	}
}