AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Podobne dokumenty
Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Remote Method Invocation 17 listopada 2010

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Testowanie aplikacji JAVA Laboratorium 8 (Tabele w scenariuszach JBehave. Projekt z podstaw BDD oraz atrap.)

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Tworzenie i wykorzystanie usług sieciowych

Instrukcja instalacji

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Aplikacje RMI

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe

Tworzenie aplikacji rozproszonej w Sun RPC

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Zaawansowane Techniki Bazodanowe

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Platformy Technologiczne

Aplikacje RMI Lab4

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

AXIS2 - tworzenie usługi sieciowej i klienta Axis Data Binding. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Dokumentacja aplikacji Szachy online

Załącznik 2 utworzenie projektu

Dokumentacja kompilacji źródeł aplikacji 1.0

Instrukcja obsługi serwera FTP v

Tworzenie i wykorzystanie usług

Systemy Rozproszone - Ćwiczenie 6

Niezbędne serwery aplikacji. Wprowadzenie do technologii JBoss i Apache Tomcat.

Komunikator internetowy w C#

Forum Client - Spring in Swing

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Aplikacje internetowe i rozproszone - laboratorium

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

Programowanie zespołowe

Zapytanie ofertowe

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

1 Wprowadzenie do J2EE

Systemy Rozproszone Technologia ICE

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Java Developers Day. Implementacja ESB przy użyciu Mule. ESB Mule Obsługa zamówień DEMO

Enterprise JavaBeans

Tomasz Dobek.

Programowanie komponentowe 5

BACKUP BAZ DANYCH FIREBIRD

Aplikacje w środowisku Java

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Web Services w połączeniu z aplikacjami uruchamianymi na urządzeniach mobilnych

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

ActiveXperts SMS Messaging Server

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Załącznik 1 instrukcje instalacji

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

W grze bierze udział dwóch graczy. Każdy uczestnik rozpoczyna rozgrywkę z sumą

OPROGRAMOWANIE KEMAS zbudowane jest na platformie KEMAS NET

Komunikacja i wymiana danych

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

System zarządzający grami programistycznymi Meridius

Programowanie Komponentowe WebAPI

Katalog książek cz. 3: Web Service

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Serwery Statefull i Stateless

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

public interface TravelAgent { public void makereservation(int cruiseid, int cabinid, int customerid, double price); }

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Platformy Technologiczne

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Web Services (SOAP) Ćwiczenie 1

2) W wyświetlonym oknie należy zaznaczyć chęć utworzenia nowej aplikacji (wygląd okna może się różnić od powyższego); kliknąć OK

Zaawansowane aplikacje internetowe laboratorium

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Co to jest GASTRONOMIA?

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Przykłady interfejsu TCP i UDP w Javie

BUDOWANIE APLIKACJI. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

ZADANIE.10 DHCP (Router, ASA) 1,5h

Transkrypt:

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki Computer Games Poker Bot - komunikacja Dokumentacja Wersja z dnia 01.01.2012 Zespół: Kamil Mazurek Tomasz Kruczkowski Prowadzący przedmiot: dr inż. Bartosz Ziółko

1. Cele projektu Celem projektu jest dostarczenie komunikacji do platformy służącej do grania w pokera za pośrednictwem internetu w szczególności ma posłużyć do testowania efektywności botów utworzonych w ramach projektu Poker Bot. Na etapie ustalania wymagań wyznaczone zostały następujące funkcjonalności: Tworzenie graczy Zapisywanie graczy wraz z ich statystykami w bazie danych Tworzenie stołów do gry Dołączanie do wybranego stołu Szkielety metod umożliwiających wykonywanie operacji operacji związanych z grą (np. fold) Szkielety metod umożliwiających monitorowanie stołu/stołów Metoda waitengine dodana na życzenie zespołu odpowiedzialnego za Engine Dodatkowym wymaganiem jest implementacja przykładowego klienta komunikującego się z serwerem. 2. Struktura Projekt składa z 3 mniejszych projektów: PokerTable PokerClient PokerTableCommons PokerTable jest projektem który realizuje część serwerową. Obsługuje zapytania od klienta oraz komunikuje się z bazą danych. PokerClient jest projektem który realizuje część kliencką. Kieruje zapytania do serwera i odbiera od niego odpowiedzi. PokerTableCommons w ramach naszego projektu (komunikacja) jest wykorzystywany jako zbiór klas wspólnych dla klienta i serwera. 3. Wykorzystane technologie Projekt w całości został zaimplementowany w języku Java z wykorzystaniem Spring Framework. Komunikacja odbywa się za pomocą CXF i bazuje na protokole SOAP. PokerTable może zostać zdeployowany np. na Tomcacie lub Glassfishu. Dodatkowo możliwe jest uruchomienie aplikacji na serwerze Jetty (np. dla testów, przez goal jetty:run). Każdy z trzech wymienionych w punkcie drugim mniejszych projektów jest projektem Mavena (Maven Project). Do persystencji wykorzystany został Hibernate oraz zaimplementowane zostały stosowne klasy DAO. Aplikacja może pracować z każdą bazą danych wspieraną przez Hibernate testy zostały przeprowadzone przy użyciu bazy danych MySQL.

4. Opis implementacji PokerTable realizuje (lub dostarcza rozwiązania, np. możliwość zapisu stanu gracza) wszystkie wymagania określone w punkcie pierwszym. Najważniejsze z nich to komunikacja z klientem, obsługa stołów do gry oraz persystencja. Metody serwera z których może korzystać klient określone są w interfejsie PokerTableInterface: @WebService public interface PokerTableInterface { public boolean createtable(string name); public String registerplayer(string name); public void jointable(string name, String token, String tablename); public List<TableBasic> getavailabletables(); public TableBasic gettablestatus(); public void fold(string name, String token, String tablename); public void raise(string name, String token, int amount, String tablename); public void allin(string name, String token, int amount, String tablename); public String helloworld() ; public CardsRoundWrapper ask(string name, String token, String tablename ) throws InterruptedException; } Implementacja tego interfejsu znajduje się w klasie PokerTableWebserviceBean: @WebService(endpointInterface = "pl.edu.agh.pokertable.common.pokertableinterface") public class PokerTableWebserviceBean implements PokerTableInterface { } Tworzenie wspomnianego beanu jest zdefiniowane w application-context.xml: <!-- PokerTableWebserviceBean --> <bean id="pokertablewebservicebean" class="pl.edu.agh.pokertable.webservice.pokertablewebservicebean"/> <jaxws:endpoint id="pokertablewebservice" implementor="#pokertablewebservicebean" address="/pokertable" /> Po zdeployowaniu PokerTable utworzony zostaje plik wsdl. Na lokalnym hoście ma adres: http://localhost:8080/pokertable/pokertable?wsdl

Wygenerowany wsdl jest wykorzystywany przez klienta w celu wygenerowania klas umożliwiających komunikację (przy pomocy wsdl2java zdefiniowanego w pom.xml). <execution> <goals> <goal>wsdl2java</goal> </goals> <configuration> <sourceroot>target/generated-sources</sourceroot> <wsdloptions> <wsdloption> <wsdl> wsdl/poker.wsdl </wsdl> </wsdloption> </wsdloptions> </configuration> </execution> Można je wygenerować np. za pomocą Maven generate-sources. Poniższy kod realizuje utworzenie gracza i dołączenie do stolika: PokerTableWebserviceBeanService ps = new PokerTableWebserviceBeanService(); PokerTableInterface proxy = ps.getpokertablewebservicebeanport(); proxy.createtable("stolik 1"); proxy.registerplayer("test"); proxy.jointable("test", "mojtoken", "Stolik 1"); Obsługa bazy danych realizowana jest przez DAO. Konfiguracja persystencji znajduje się w plikach.xml np.: jdbc.driverclassname=com.mysql.jdbc.driver jdbc.url=jdbc:mysql://localhost/poker jdbc.username=poker jdbc.password=poker2011 5. Przykładowa kompilacja i uruchomienie Na początku należy zbudować i umieścić w lokalnym repozytorium Mavena PokerTableCommons: cd pokertable/pokertablecommons mvn -U clean install... [INFO] BUILD SUCCESSFUL [INFO] Total time: 5 seconds [INFO] Finished at: Mon Jan 02 01:51:17 CET 2012 [INFO] Final Memory: 20M/230M

Podobnie można postąpić z PokerTable: cd pokertable/pokertable mvn -U clean install... [INFO] BUILD SUCCESSFUL [INFO] Total time: 24 seconds [INFO] Finished at: Mon Jan 02 01:53:51 CET 2012 [INFO] Final Memory: 46M/264M zostanie utworzony plik.war który można zdeployować np. używając Tomcata Drugi sposób uruchomienia PokerTable to wykorzystanie serwera Jetty: np. w Eclipsie można wykonać goal jetty:run 2012-01-02 01:58:51.748::INFO: jetty-6.1.10 INFO 02 sty 2012 01:58:57,181 ReflectionServiceFactoryBean - Creating Service {http://webservice.pokertable.agh.edu.pl/}pokertablewebservicebeanservice from class pl.edu.agh.pokertable.common.pokertableinterface INFO 02 sty 2012 01:58:58,759 ServerImpl - Setting the server's publish address to be /pokertable INFO 02 sty 2012 01:58:58,860 ContextLoader - Root WebApplicationContext: initialization completed in 6006 ms 2012-01-02 01:58:59.170::INFO: Started SelectChannelConnector@0.0.0.0:8080[INFO] Started Jetty Server Po zdeployowaniu (przykład dla localhost) pod adresem http://localhost:8080/pokertable/ (w zależności od skonfigurowanego portu) powinień być dostępny następujący widok: Tak długo jak serwer działa możliwe jest łączenie się z endpointem i wykonywanie udostępnionych funkcji. Można je wywoływać za pomocą klienta lub testować np. poprzez SoapUI.