Ken,
    Here is the code which worked for me.
package com.ebd.ejb;

import com.ebd.ejb.CabinHome;
import com.ebd.ejb.Cabin;
import com.ebd.ejb.CabinPK;

import javax.naming.InitialContext;
import javax.naming.Context;
import javax.naming.NamingException;
import java.rmi.RemoteException;
import javax.rmi.PortableRemoteObject;
import java.util.Properties;
import javax.ejb.CreateException;

public class CabinSessionClient
{

        public static int SHIP_ID = 2;
        public static int BED_COUNT = 3;

        public static void main(String [] args)
    {
        try
        {
            Context jndiContext = getInitialContext();
            Object ref = (TravelAgentHome)
jndiContext.lookup("TravelAgentBean");
            TravelAgentHome home = (TravelAgentHome)
PortableRemoteObject.narrow(ref,TravelAgentHome.class);       
            TravelAgent reserve = (TravelAgent) home.create();
            String [] list = reserve.listCabins(SHIP_ID,BED_COUNT);
            System.out.println("Results ="+list.length);
            for(int i=0;i<list.length;i++)
            {
                System.out.println(list[i]);
            }
        }
        catch(java.rmi.RemoteException re)
        {
            re.printStackTrace();
        }
        catch( Throwable t)
        {
            t.printStackTrace();
        }
    }
    public static Context getInitialContext() throws
javax.naming.NamingException
    {
        Properties p = new Properties();
       
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
        p.put(Context.PROVIDER_URL,"localhost");
        p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
        System.setProperty("java.naming.factory.initial", 
                "org.jnp.interfaces.NamingContextFactory");
        System.setProperty("java.naming.provider.url", 
                "localhost:1099");
        Context ctx = new javax.naming.InitialContext();
        return ctx;
    }
}


Ken Jenks wrote:
> 
> Not there yet.
> 
> This command:
> 
> java -classpath
> /usr/local/jboss/lib/ext/ejb.jar:/usr/local/jboss/client/jnp-client.jar:/usr
> /local/jboss/client/jboss-client.jar:. com.titan.travelagent.jBossClient_1
> 
> ...gives this error:
> 
> java.rmi.ServerException: RemoteException occurred in server thread; nested
> exception is:
>          java.rmi.ServerException: Exception occurred; nested exception is:
>          javax.ejb.EJBException
> java.rmi.ServerException: Exception occurred; nested exception is:
>          javax.ejb.EJBException
> javax.ejb.EJBException
>          at
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Stream
> RemoteCall.java:245)
>          at
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:220)
>          at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:122)
>          at
> org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker_Stub.invoke(Un
> known Source)
>          at
> org.jboss.ejb.plugins.jrmp.interfaces.StatelessSessionProxy.invoke(St
> atelessSessionProxy.java:87)
>          at $Proxy1.listCabins(Unknown Source)
>          at com.titan.travelagent.jBossClient_1.main(jBossClient_1.java:48)
> 
> Here's the client listing, jBossClient_1.java:
> 
> package com.titan.travelagent;
> 
> import com.titan.cabin.CabinHome;
> import com.titan.cabin.Cabin;
> import com.titan.cabin.CabinPK;
> 
> import javax.naming.InitialContext;
> import javax.naming.Context;
> import javax.naming.NamingException;
> import javax.ejb.CreateException;
> import java.rmi.RemoteException;
> import java.util.Properties;
> 
> public class jBossClient_1 {
>    public static int SHIP_ID = 1;
>    public static int BED_COUNT = 3;
> 
>    public static void main(String [] args){
>      try {
> /* COMMENTED OUT FOR jBoss
>        Context jndiContext = getInitialContext();
>        Object obj = jndiContext.lookup("ejb/TravelAgentHome");
> COMMENTED OUT FOR jBoss */
> 
> /* BEGIN SECTION ADDED FOR jBoss */
>        // Set up the naming provider; this may not always be necessary,
> depending
> 
>        // on how your Java system is configured.
>        System.setProperty("java.naming.factory.initial",
>          "org.jnp.interfaces.NamingContextFactory");
>        System.setProperty("java.naming.provider.url",
>          "localhost:1099");
> 
>        // Get a naming context
>        InitialContext jndiContext = new InitialContext();
> 
>        // Get a reference to the TravelAgentBean
>        Object obj  = jndiContext.lookup("TravelAgentBean");
> 
>        // Get a reference from this to the Bean's Home interface
> 
> /* END SECTION ADDED FOR jBoss */
> 
>        TravelAgentHome home = (TravelAgentHome)
> javax.rmi.PortableRemoteObject.narrow(obj, TravelAgentHome.class);
> 
>        TravelAgent reserve = home.create();
> 
>        // Get a list of all cabins on ship 1 with a bed count of 3.
>        String list [] = reserve.listCabins(SHIP_ID,BED_COUNT); // LINE 48 HERE!
> 
>        for(int i = 0; i < list.length; i++){
>          System.out.println(list[i]);
>        }
> 
>      } catch(java.rmi.RemoteException re){re.printStackTrace();}
>        catch(Throwable t){t.printStackTrace();}
>    }
>    static public Context getInitialContext() throws Exception {
>      Properties p = new Properties();
>      // ... Specify the JNDI properties specific to the vendor.
>      return new InitialContext();
>    }
> }
> 
> So the client compiles and runs, but after it creates the connection with
> home.create() (which succeeds), the next call to the bean,
>        String list [] = reserve.listCabins(SHIP_ID,BED_COUNT); // LINE 48 HERE!
> fails.
> 
> It seems strange to lookup TravelAgentBean to get the home interface. Maybe
> that's my problem.
> 
> Any suggestions?
> 
> -- Ken Jenks, http://abiblion.com/
> 
>     Tools for reading.
> 
> --
> --------------------------------------------------------------
> To subscribe:        [EMAIL PROTECTED]
> To unsubscribe:      [EMAIL PROTECTED]
> Problems?:           [EMAIL PROTECTED]


--
--------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Problems?:           [EMAIL PROTECTED]

Reply via email to