Hallo,
ich will mir gerade EJB beibringen und stosse gleich mal auf ein Problem. Um den Ablauf des deploys und so zu kennen habe ich einfach mal ein Beispiel aus einem Buch abgetippt. (Session Beans) die Session, SessionHome und SessionImpl Klasse hab ich dann über das Deployment Tool von Java zusammengefasst zu einem ear file und habe das dann deployd. In der Info steht auch, dass diese gestartet ist mit dem JNDI Namen "HelloWorld" (wer hätte das gedacht)
Nun hab ich eine Client Klasse geschrieben:
wie man sieht hab ich im LookUp auch "HelloWorld" aber ich bekomme immer folgende Exception:
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
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at SessionBeans.TestHallo.main(TestHallo.java:35)
Jetzt weiss ich nicht was mein Fehler ist. Ich hab schon durchs Buch geblättert und im J2ee Tutorial nachgesehen aber entweder erschlagen die einen mit Infos oder es steht garnichts dazu da. Das richtige hab ich leider noch nicht raus gefunden.
Muss ich vielleicht irgendwo die Domain angeben? Momentan versuche ich das aus dem Netbeans raus zu starten. Kann es sein, dass ich die Klasse mit irgendeinem Parameter aufrufen muss ?
ich will mir gerade EJB beibringen und stosse gleich mal auf ein Problem. Um den Ablauf des deploys und so zu kennen habe ich einfach mal ein Beispiel aus einem Buch abgetippt. (Session Beans) die Session, SessionHome und SessionImpl Klasse hab ich dann über das Deployment Tool von Java zusammengefasst zu einem ear file und habe das dann deployd. In der Info steht auch, dass diese gestartet ist mit dem JNDI Namen "HelloWorld" (wer hätte das gedacht)
Nun hab ich eine Client Klasse geschrieben:
Code:
public class TestHallo {
/** Creates a new instance of TestHallo */
public TestHallo()
{
}
public static void main(String[] args)
{
try
{
// JNDI Namenskontext erstellen
Context context = new InitialContext();
// nach HelloWorld suchen
HelloWorldSessionHome home = (HelloWorldSessionHome)
PortableRemoteObject.narrow(context.lookup("HelloWorld"), HelloWorldSessionHome.class);
// neue Session Bean erstellen
HelloWorldSession session = (HelloWorldSession) home.create();
System.out.println("Default Greeting is : " + session.getGreeting());
session.remove();
}
catch (Throwable t)
{
t.printStackTrace();
}
}
}
wie man sieht hab ich im LookUp auch "HelloWorld" aber ich bekomme immer folgende Exception:
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
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:640)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at SessionBeans.TestHallo.main(TestHallo.java:35)
Jetzt weiss ich nicht was mein Fehler ist. Ich hab schon durchs Buch geblättert und im J2ee Tutorial nachgesehen aber entweder erschlagen die einen mit Infos oder es steht garnichts dazu da. Das richtige hab ich leider noch nicht raus gefunden.
Muss ich vielleicht irgendwo die Domain angeben? Momentan versuche ich das aus dem Netbeans raus zu starten. Kann es sein, dass ich die Klasse mit irgendeinem Parameter aufrufen muss ?