Niedawno miałem okazje, w celu zaliczenia przedmiotu TIN na mojej uczelni, zaprojektować niewielki serwis internetowy umożliwiający wielu użytkownikom udział w różnych, wybranych grach, poprzez sieć.
Był to mój pierwszy kontakt z tą platformą, zatem pierwsze pytania jakie mi się nasunęły po krótkim rekonesansie:
1) Platforma SUN’a posiada wbudowany system zarządzania relacyjnymi bazami danych ‘Cloudscape’.
Jak się z niego korzysta? Zapewne poprzez wiersz poleceń.. jakże by inaczej.
2) Aplikacja J2EE jest plikiem w formacie .ear . Jak ją utworzyć ?
3) W jaki sposób odpalamy serwer http ?
Abyśmy mogli cokolwiek zaprojektować i wdrożyć (ang. ‘deployment’), obok zainstalowanej dystrybucji J2EE (ja korzystałem z wersji 1.3), musimy posiadać Java SDK , w wersji max 1.4.2.
J2EE 1.3 oraz Java 1.5 …? – to nie zda egzaminu.
Sekret pracy – w katalogu instalacyjnym j2ee/bin posiadamy zbiór narzędzi, dlatego warto mieć na pulpicie skrót cmd do tego katalogu, aby wygodnie odpalać niezbędne aplikacje – j2ee, cloudscape, deploytool itd.
Wszystko powoli się wyjaśnia:
1) aby utworzyć bazę danych, odpowiednie tabele, odpalamy cloudscape.bat –start, po czym w nowym oknie cloudscape.bat – isql, i mamy wiersz poleceń do wpisywania instrukcji SQL / PLSQL. RSDB Cloudscape jest autorstwa firmy IBM, ale nie jest już rozwijany.
2) deploytool.bat – po krótszej chwili otworzy się okno programiku napisanego…. w javie. To narzędzie pozwala kolejno na stworzenie aplikacji, dodanie komponentów, archiwów war oraz jar (te pierwsze są tworzone automatycznie, wystarczy ze wskażemy nasze pliki .class czy też .jsp)

3) J2EE posiada serwer http Tomcat. Wystarczy wejść na localhost:8000, aby przywitała nas strona domowa.
Nie będę się rozpisywał o technikach programowania, chociażby z tego powodu że należy umieć programować chociaż na poziomie średniozaawansowanym, ale przedstawię kilka kruczków.
Dla każdej aplikacji ustawiamy tzw. ContextRoot, czyli katalog, w którym umieszczamy naszą witrynę. Jeżeli kontekst rootem będzie ‘przelicznik’, to nasza witryna będzie dostępna pod adresem localhost:8000/przelicznik
Wszelkiej maści gry sieciowe są w ogromnej większości apletami Javy. Jeżeli chcemy przekazać jakieś danego do takiego apletu, warto to zrobić z poziomu strony jsp, za pomocą kodu html i argumentów PARAM:
<APPLET CODE=battleships.Battleships.class WIDTH=700 HEIGHT=400>
<PARAM NAME=”chmurka_user_id” VALUE=”<%=login%>”>
<PARAM NAME=”chmurka_room” VALUE=”<%=room%>”>
</APPLET>
Aplety umieszczamy w jakimś pakiecie, następnie upewniamy się, czy deploytool nie umieścił plików w katalogu /classes, jeżeli tak jest to je przenosimy do katalogu głównego w naszym WAR.
Najciekawsze – w jaki sposób użytkownicy mają się ze sobą komunikować?
Aby użytkownicy systemu mogli widzieć siebie nawzajem i ze sobą grać, należy zaimplementować rozwiązanie, które pozwoli pobierać dane o użytkownikach i umożliwić komunikację. Bezpośrednie podłączenie apletu do EJB nie jest dobrym rozwiązaniem, ściany ognia blokują wysokie porty, więc wywołanie RMI-IIOP nie zawsze jest możliwe – dlatego warto wprowadzić serwlety.
