18 January 2010 TDTS04: Ett chattsystem i java baserat på corba Juha Takkinen, Ph.D. IDA, Institutionen för datavetenskap 1.0 Översikt Labb 3 består av att utforma, implementera, testa och demonstrera ett chattsystem i java och baserat på corba. Du får också ett antal följdfrågor att besvara om labben. 2.0 Systemet och dess funktionalitet Figur 1 visar vilka komponenter som ingår i chattsystemet som du ska utveckla i labben. FIGUR 1. Chattsystemet och dess komponenter 1 av 6
Installering av kodskelett Chattsystemet är tänkt att fungera på följande sätt: Klienter kan ansluta sig till servern (kommandot join) eller lämna servern (kommandot leave). När en klient ansluter sig så måste den ange sitt namn. Klienten kan endast ansluta sig om namnet inte redan finns. När en klient har anslutit sig så betraktas den som en aktiv klient. Endast aktiva klienter kan publicera inlägg (kommandot post) till hela chattgruppen som består av andra aktiva klienter. En aktiv klient kan publicera en rad åt gången. Alla klienter (passiva och aktiva) kan begära en lista (kommandot list) på alla användarnamn och aktiva klienter i systemet. Chattservern vidareförmedlar ett inlägg som publiceras till alla aktiva klienter, inklusive till den som publicerade inlägget. Chattservern vidareförmedlar på samma sätt även alla genomförda anslutningar (join) och avslutningar (leave) till alla aktiva klienter. 3.0 Installering av kodskelett Utgå från kodskelettet som finns på kurshemsidan. Den implementerar ett enkelt klient-server-baserat chattsystem som innehåller de byggstenar som du behöver för att göra labben. Börja med att kontrollera att du kan kompilera och köra koden som du har laddat ned från kurshemsidan. Lär dig tyda vad koden gör. Använd den medföljande Makefile-filen. Starta orbd-namnservern på ett valfritt portnummer. Makefile-filen använder port 1050, men du måste ändra detta eftersom det finns andra labbgrupper som också kör samma kod och på samma maskin i labbsalen. 1 Om du inte ändrar portnumret kommer du med stor sannolikhet att anropa en namnserver som tillhör en annan grupp! Här är ett exempel på hur du kompilerar chattsystemet: % make target % make clobber % make idl /usr/bin/idlj -fall Chat.idl % make c 1. Ta till exempel de fyra sista siffrorna i ditt personnummer istället. 2 av 6 TDTS04: Ett chattsystem i java baserat på corba
Installering av kodskelett /usr/bin/javac ChatClient.java ChatApp/ *.java % make s /usr/bin/javac ChatServer.java ChatApp/*.java För att sedan exekvera och demonstrera chattsystemet så behöver du ha tre öppnade terminalfönster på skärmen. Starta först namnservern i det första fönstret. Exemplet nedan antar att du har valt portnummer 1057. Se till starta namnserverprocessen i förgrunden, alltså utan &-tecken på slutet, så är det enkelt att stoppa den med ctrl-c i slutet av labben. % make orbd orbd -ORBInitialPort 1057 -ORBInitialHost localhost Starta chattservern i det andra terminalfönstret: % make server /usr/bin/java ChatServer -ORBInitialPort 1057 -ORBInitialHost localhost ChatServer ready and waiting... Starta slutligen chattklienten i det tredje fönstret: % make client /usr/bin/java ChatClient -ORBInitialPort 1057 -ORBInitialHost localhost Hello......Goodbye! När du studerar koden för att förstå hur chattsystemet är uppbyggt, se speciellt callback-funktionen som anropas av servern i klienten. Du kommer att behöva uttnyttja denna funktion. När du inte längre arbetar med labben, se till att stoppa orbd-namnserver! TDTS04: Ett chattsystem i java baserat på corba 3 av 6
Chattsystemet och körexempel 4.0 Chattsystemet och körexempel När du har installerat kodskelettet (se ovan) så är du redo att börja implementera chattsystemet. Börja med att definiera chattsystemets gränssnitt för klient-serverkommunikationen i idl (interface definition language). Detta gör du i filen Chat.idl. Försäkra dig om att all funktionalitet (post, leave m.m.) som definierats ovan kommer med i gränssnittet. Sedan ska du lägga till kod som hanterar denna funktionalitet i filerna Chat- Client.java och ChatService.java. Det räcker med att du kan demonstrera chattsystemet på en maskin. Ditt program förväntas hantera alla fel på ett snyggt sätt (se körexemplet nedan). Gör ditt program interaktivt. Till exempel, en typisk session kan se ut som nedan (meddelanden från servern är indenterade och i kursiv stil): % make client /usr/bin/java ChatClient -ORBInitialPort 1057 -ORBInitialHost localhost % join bob Error: user bob is already an active chatter join alice Welcome alice % list List of registered users: alice bob charlie % post Who is out there? alice said: Who is out there? charlie left % list List of registered users: alice bob 4 av 6 TDTS04: Ett chattsystem i java baserat på corba
Följdfrågor om labben % post Why did Charlie leave?! alice said: Why did Charlie leave?! bob said: Because you joined... bob left % list List of registered users: alice % leave Goodbye alice % quit % 5.0 Följdfrågor om labben 1. Förklara vad som är syftet med namnservern som används i chattsystemet. Hur hade ett anrop från en klient sett ut om namnservern inte hade funnits? 2. Servern i labben utnyttjar callback-funktionen, som är ett sätt att implementera asynkrona metodanrop i corba. Denna implementation av asynkrona anrop i corba påverkar inte hur objekt är implementerade i servern. Förklara varför så är fallet. Redogör även för om finns fler alternativ för att implementera asynkrona anrop i corba. 3. Jämför sättet att utveckla program i corba (labb 3) med java rmi (labb 2). Vilka skillnader och likheter finns mellan dem? 6.0 Redovisning För att slutföra labben måste du demonstrera din lösning för labbassistenten. Vid demonstrationen ska du ha igång orbd-namnserverprocessen, corba-chattservern som du har implementerat och minst tre olika instanser av corba-chattklienten. Kontrollera att du har svarat utförligt på frågorna som ställs i labbuppgiften och använd vederhäftiga källor som referenser. Innan du demonstrerar din lösning, ge din labbassistent en papperskopia av din kod inklusive Makefile-filen. TDTS04: Ett chattsystem i java baserat på corba 5 av 6
Redovisning Lämna sedan in din laborationslösning på papper i ett korrekt ifyllt och underskrivet IDA-labbomslag till laborationsassistenten. Kontrollera att du har besvarat alla frågorna i texten så utförligt som möjligt och även angett vederhäftiga källor som stöder dina svar. 6 av 6 TDTS04: Ett chattsystem i java baserat på corba