[ skyforever @ 08.05.2008. 19:20 ] @
Pozdrav svima!

Pokušavam koristeći jndi da pozovem local home interface cmp entity bean-a.

Kod je sledeći:
Code:

        Hashtable ht=new Hashtable();
        ht.put(InitialContext.INITIAL_CONTEXT_FACTORY,
        "org.jnp.interfaces.NamingContextFactory");        
        ht.put(InitialContext.PROVIDER_URL,"jnp://localhost:1100");
        ht.put(InitialContext.URL_PKG_PREFIXES,
        "org.jboss.naming:org.jnp.interfaces");        
        InitialContext ic = new InitialContext(ht);
        if(ic!=null)
        System.out.println("success");/*I am getting success as output here*/        
        Object ds = ic.lookup("jnp://cmp.KarticaLocalHome");
                       
        KarticaLocalHome home = (KarticaLocalHome)javax.rmi.PortableRemoteObject.narrow(ds,KarticaLocalHome.class);


Pretpostavljam da grešim što pozivam PortableRemoteObject, ali ne znam šta da radim sa lokalnim interfejsom.
U daljem kodu ja mogu da pozovem metodu home.create(), ali prilikom izvršavanja dobijam sledeću grešku:


log4j:WARN No appenders could be found for logger (org.jnp.interfaces.NamingContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ClassCastException
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
at client.Client.main(Client.java:41)
Caused by: java.lang.ClassCastException: org.jnp.interfaces.NamingContext cannot be cast to org.omg.CORBA.Object
at com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212)
... 2 more
success
Java Result: 1


Nadam se da neko može da mi pomogne, jer mislim da nije tako težak problem, ali ja jednostavno ne znam o čemu se radi.

Hvala unapred!
[ zmau @ 08.05.2008. 20:06 ] @
Hm.
Je l ti to koristiš EJB 2 ? Ili nešto slično ?
Ako da, je l moraš ?
Ja sam ranije pokušavao da radim s tim i imao sam probleme sa komunikacijom među objektima, baš vezano za JNDI. I nikad ih nisam rešio. Nego sam prešao na EJB3, i od tad sam dosta srećnij u životu.
Tamo su ove (i ne samo ove) stvari rešene znatno udobnije. I na više mesta sam sreo preporuku da EJB2 apsolutno nema potrebe da postoji, otkad je izmišljen EJB3.
[ skyforever @ 08.05.2008. 20:30 ] @

Iskreno, pokušavam da koristim EJB3, ali izgleda da mi ne ide, pošto očigledno ne znam kako je to tamo rešeno.
Ako misliš na nešto tipa:

Code:

@EJB
private myHome home


onda verovatno imam problema sa editorom. Korisitim NetBeans 6.0 i tako sam mogao da izaberem samo jdk 1.4, a to tamo ne radi.
Možda da instaliram još nešto ili da menjam editor? Mada sam mislio da sam instalirao sve što treba...

Hvala!
[ zmau @ 08.05.2008. 21:28 ] @
Da, mislio sam na anotacije. Sa njima sam se snašao neuporedivo lakše nego sa JNDIom.
Evo ti primer kreiranja entiteta unutar metode session bean-a u mom EJB3 projektu :
Code:
Dokument novoTrebovanje = new Dokument();
;)

Oko netbeansa ti ne mogu pomoć ove noći, nemam iskustva s njim.
Koristim eclipse, odnosno jboss-ovu verziju eklipsa sa bandlovanom podrškom za jboss app server. I javu 1.5.

[ skyforever @ 08.05.2008. 21:42 ] @
Hvala puno!
Znam da je tako mnogo lakše, pa ću se malo potruditi da provalim u čemu je problem sa netbeans-om...
Počeo sam i ja sa eclipse-om, ali trebalo je download-ovati nekoliko stvari (mrzelo me :)), a u netbeans-u se jednostavno dodaje novi server...

Ipak hvala, mislim da ću se snaći. Čitao sam dosta toga o ejb3, ali ako imaš neku literaturu koju preporučuješ, bio bih ti zahvalan ako bi mi rekao šta je to... :)

[ Toxter @ 08.05.2008. 23:50 ] @
Umesto:
Code:
KarticaLocalHome home = (KarticaLocalHome)javax.rmi.PortableRemoteObject.narrow(ds,KarticaLocalHome.class);


trebalo bi da ti je dovoljno:

Code:
KarticaLocalHome home = (KarticaLocalHome)ds;


Pozdrav
[ skyforever @ 09.05.2008. 06:14 ] @
Od 10000 kombinacija koje sam probao, izgleda da se ove nisam setio...
Nadam se da ce uspeti.

Hvala!
[ skyforever @ 10.05.2008. 13:30 ] @
Dakle, da sumiramo...

Code:

KarticaLocalHome home = (KarticaLocalHome)ds;


ne radi. Ali to sada nije ni bitno, pošto sam prešao na J2EE 5, odnosno na EJB3 (bar koliko sam ja upućen u sve to...)

Ono što mi sada nije baš najjasnije, jeste sledeće:
Ranije sam imao Entity Bean, pa sam birao cmp ili bmp, a sada imam entity class. A opcije su samo entitiy class, ili entity class from database. Pretpostavljam da sada te klase koje sam generisao, mogu da koristim kao bilo koju drugu klasu, ali me zanima sta se desilo sa svim onim Local Home, Remote i ostalim interfejsima kod entity bean-ova... Nije da mi nedostaju, vec sam nekako zbunjen