5497l4

Listing 4. UseCalculator.java, Which Connects To and Uses Our
Calculator EJB

package il.co.lerner.calculator;

import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import il.co.lerner.calculator.Calculator;
import il.co.lerner.calculator.CalculatorHome;

class UseCalculator
{
    public static void main(String[] args)
    {
        try
            {
                // Get a naming context
                InitialContext jndiContext = new InitialContext();
                System.out.println("Got context");
 
                // Get a reference to the Calculator Bean
                Object ref = jndiContext.lookup("calculator/Calculator");
                System.out.println("Got reference");
 
                // Get a reference from this to the Bean's Home interface
                CalculatorHome home = (CalculatorHome)
                    PortableRemoteObject.narrow(ref, CalculatorHome.class);
 
                // Create a Calculator object from the Home interface
                Calculator calculator = home.create();
 
                // call multiply()
                System.out.println("Multiplying 2 x 3:");
                System.out.println(calculator.multiply(2, 3));
            }
        catch(Exception e)
            {
                System.out.println(e.toString());
            }
    }
}
