[jboss-user] [Beginners Corner] - Could not get EJBHome
stefan_jing
do-not-reply at jboss.com
Wed Aug 29 13:23:17 EDT 2007
Hi all,
i am trying to run the client:
package de.ejbkomplett.reisebuero.client;
import de.ejbkomplett.reisebuero.usecase.*;
import javax.ejb.EJBMetaData;
import javax.ejb.HomeHandle;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.sql.Date;
import java.util.*;
public class Client {
public static void main(String[] args) {
System.out.println("*****************************");
System.out.println("** Test-Client Kapitel 04 **");
System.out.println("** HomeHandle-Beispiel **");
System.out.println("** gestartet... **");
System.out.println("*****************************\n");
try {
// 1. JNDI-Context ermitteln
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
env.put("java.naming.provider.url", "localhost:1099");
Context context = new InitialContext(env);
System.out.println("*** Mit JNDI-Namensdienst verbunden...");
// 2. Home-Objekt über JNDI holen
Object o = context.lookup("FlugSuche");
FlugSucheHome home = (FlugSucheHome)
PortableRemoteObject.narrow(o, FlugSucheHome.class);
System.out.println("*** Referenz auf Home-Objekt FlugSuche erhalten...");
System.out.println("*** FlugSuche Bean - HashCode: " + ((Object)home).hashCode());
System.out.println("*** FlugSuche Bean - Klasse : " + ((Object)home).toString());
// 3. EJBObject erzeugen
FlugSuche suche = home.create();
System.out.println("*** FlugSuche Bean ist erzeugt...");
// 4. HomeHandle der EJB-Komponente beim Home Interface anfordern
javax.ejb.HomeHandle hh = home.getHomeHandle();
// 5. HomeHandle serialisieren
System.out.println("*** HomeHandle wird serialisiert...\n");
java.io.FileOutputStream fileOut = new java.io.FileOutputStream("homehandle.ser");
java.io.ObjectOutputStream objectOut = new java.io.ObjectOutputStream(fileOut);
objectOut.writeObject(hh);
objectOut.flush();
fileOut.close();
hh = null; //HomeHandle löschen
suche.remove(); //EJBObject wieder löschen
// 6. HomeHandle deserialisieren
System.out.println("*** HomeHandle wird deserialisiert...");
java.io.FileInputStream fileIn = new java.io.FileInputStream("homehandle.ser");
java.io.ObjectInputStream objectIn = new java.io.ObjectInputStream(fileIn);
javax.ejb.HomeHandle handleNeu = (javax.ejb.HomeHandle)objectIn.readObject();
fileIn.close();
//Home-Objekt vom HomeHandle erfragen.
//Bei Aufruf der Methode getEJBHome() sorgt die Implemen-
//tierung des HomeHandles dafür, eine funktionsfähige
//Referenz auf das Home Interface zur Verfügung zu stellen.
javax.ejb.EJBHome homeNew = (FlugSucheHome)handleNeu.getEJBHome();
//Nach dem Cast auf das FlugSucheHome Interface steht das
//Remote Home Interface wieder zur Verfügung und kann für
//die Steuerung des Lebenszyklus einer FlugSuche-Komponente
//genutzt werden.
FlugSucheHome sucheNeuHome = (FlugSucheHome)PortableRemoteObject.narrow(homeNew, FlugSucheHome.class);
System.out.println("*** FlugSuche Bean - HashCode: " + ((Object)sucheNeuHome).hashCode());
System.out.println("*** FlugSuche Bean - Klasse : " + ((Object)sucheNeuHome).toString());
FlugSuche sucheNeu = sucheNeuHome.create();
//EJBObject wieder löschen
sucheNeu.remove();
} catch (Exception e) {
e.printStackTrace();
}
}
}
then I get the following message:
[java] *****************************
[java] ** Test-Client Kapitel 04 **
[java] ** HomeHandle-Beispiel **
[java] ** gestartet... **
[java] *****************************
[java] *** Mit JNDI-Namensdienst verbunden...
[java] *** Referenz auf Home-Objekt FlugSuche erhalten...
[java] *** FlugSuche Bean - HashCode: 15232416
[java] *** FlugSuche Bean - Klasse : FlugSucheHome
[java] log4j:WARN No appenders could be found for logger (org.jboss.security.SecurityAssociation).
[java] log4j:WARN Please initialize the log4j system properly.
[java] *** FlugSuche Bean ist erzeugt...
[java] *** HomeHandle wird serialisiert...
[java] *** HomeHandle wird deserialisiert...
[java] java.rmi.ServerException: Could not get EJBHome; nested exception is:
[java] javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
[java] at org.jboss.proxy.ejb.handle.HomeHandleImpl.getEJBHome(HomeHandleImpl.java:107)
[java] at de.ejbkomplett.reisebuero.client.Client.main(Client.java:73)
[java] Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
[java] at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
[java] at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
[java] at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
[java] at javax.naming.InitialContext.lookup(InitialContext.java:351)
[java] at org.jboss.proxy.ejb.handle.HomeHandleImpl.getEJBHome(HomeHandleImpl.java:102)
[java] ... 1 more
please help me!
Thanks!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079281#4079281
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4079281
More information about the jboss-user
mailing list