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]