Avatar billede degn Nybegynder
28. maj 2009 - 10:55 Der er 8 kommentarer

junit, lookup server context på wepsphere

Hej

Jeg har 2 ear projekter. Det ene er en server del, og det andet er en gui del, der kalder serveren. begge app kører på samme server og jeg forbinder via jndi lookup og rmi kald. Det ser sådan her ud:
InitialContext context = new InitialContext();
Object controller = context.lookup("java:comp/env/ejb/service_controller_home");
ServiceControllerHome home = (ServiceControllerHome) javax.rmi.PortableRemoteObject.narrow(controller, ServiceControllerHome.class);

ServiceController controller = home.create();
String xmlResponse = (String) controller.processRequest(context, xmlRequest);


Nu vil jeg så til at lave noget junit test af min gui app, og det er her jeg kommer i problemer. Junit kører ikke i under websphere serveren, og når man så kommer til koden med lookup, så fejler junit testen, da den jo ikke kører under en container hvor den kan slå dette op. Er der nogen der har en løsning på hvordan jeg i min junit kode, kan lave en context.lookup ???
Avatar billede arne_v Ekspert
28. maj 2009 - 17:30 #1
Man plejer at bruge noget som f.eks. Cactus til den slags.

http://jakarta.apache.org/cactus/

http://jakarta.apache.org/cactus/how_it_works.html viser hvordan det virker.
Avatar billede arne_v Ekspert
28. maj 2009 - 17:33 #2
Ved at saette de rigtige properties til JNDI boer du ogsaa kunne slaa op og kalde remote interfaces. Men du vil aldrig kunne kalde local interfaces.
Avatar billede arne_v Ekspert
28. maj 2009 - 17:36 #3
Jeg kan sikkert finde de rette JNDI properties til WebSphere JNDI.
Avatar billede degn Nybegynder
29. maj 2009 - 10:16 #4
Jeg har kigget lidt på denne side:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1//index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rnam_example_prop3.html

Ifølge det de skriver her, så burde man vel kune benytte den "Topology-based qualified names" metode...
Men det virker ikke, eller så kan jeg ikke finde ud af hvad node og server jeg kører på. Eller er det fordi jeg ikke kan benytte initialcontext uden at sætte nogle specielle værdier så ???
Avatar billede arne_v Ekspert
07. juni 2009 - 04:15 #5
Så vidt jeg kan se så fortæller det link, hvilke path inde i WAS JNDI en EJB har når den tilgåes udefra.

Men derudover skal du også have de rette properties for at tilgå WAS JNDI.
Avatar billede arne_v Ekspert
07. juni 2009 - 04:23 #6
De specifikke properties afhænger vist af WAS versionen men prøv med noget lignende:

Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.Websphere.naming.WsnInitialContextFactory");
ht.put(Context.PROVIDER_URL, "iiop://localhost:2809");
Context ctx = new InitialContext(ht);
Avatar billede arne_v Ekspert
03. juli 2009 - 22:31 #7
Kommet videre?
Avatar billede degn Nybegynder
06. juli 2009 - 13:30 #8
Jeg har lavet et nyt projekt med mine junit's. Jeg eksporterer en .jar fil af det projekt jeg vil teste, til dette nye projekt. Jeg kører nu det nye projekt som en websphere v6.1 Application Client. Dette virker og mine junit's kan compilere, og når de kører kan de snakke med websphere servere. Mit eneste problem/uhensigtsmæssighed er at jeg skal hele tiden eksportere en ny .jar fil, for at få testet det nye kode, og at jeg ikke kan benytte RSA(eclipse)'s junit view.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester