sobota, 8 grudnia 2007

Stawiamy własny Web Service ! ^^

Ostatnio modne więc czas pokazać jak to zrobić prosto i łatwo ;) Web service jaki zdbudujemy będzie bezstanowy, czyli nie istnieją tu żadne sesje i tego typu rzeczy.
Co potrzebujemy ?
- Oracle jDeveloper (ja pracowałem na wersji 10.1.2)
- JDK (ja pracowałem na wersji 6 update 1)

Hmmm to chyba wszystko, no to zaczynamy!
Na początku wchodzimy do katalogu /jdev/j2ee/config/ i edytujemy pliczek server.hml
Znajdujemy linie zaczynającą się na <java-compiler name="javac" i dodajemy tam parametr bindir="[sciezka do jdk /bin". U mnie to ma postać : bindir="C:\Program Files\Java\jdk1.6.0_01\bin".
Zapisujemy.
Uruchamiamy serwer (jdev/j2ee/home/oc4j.jar jak zapyta zapora XP czy odblokowac to tak).
Uruchamiamy jDevelopera (jdev/jdev/bin/jdevw.exe).

Czas skonfigurowac połączenie.
Na pasku navigatora mamy dwie zakładki, wybieramy connection, następnie application server -> new connection. Ustawiamy nazwe (u mnie 'localWS') oraz typ połączenia na Standalone OC4J. Nastepne ustawienia:
Username: admin
Password: [nie podam;p] (zaznaczamy deploy password)
URL: ormi://127.0.0.1/
Target web site: http-web-site
Scieżka do admin.jar : u mnie był w /jdev/j2ee/home ^^
Ok, testujemy połączenie. Powinno być wszystko si :)

Czas zabrać się za naszą usługę. Będzie ona udostępniać kursy kilku walut. Implementacje pobierania tych kursów pozostawiam zainteresowanym, w przykładzie będzie zwracać losową wartość w przybliżonym zakresie.

Tworzymy pustą przestrzeń roboczą 'ExchangeWebservice', dodajemy plik java z naszą klasą:

import java.math.*;

public class Exchange
{
public double getUSD()
{
return Math.random() + 2;
}


public double getRUB()
{
return Math.random();
}


public double getEUR()
{
return Math.random() + 3;
}

public double getMTL()
{
return Math.random() + 8;
}
}


No to by było na tyle pisania:)
Do naszego projektu dodajemy: Bussines Tier -> Web services -> Java Web Service.
Uruchamia sie nam wizard. Wybieramy z listy Java Class: Exchange i dajemy nazwe dla webservice: ExchangeWebService. Następnie zaznaczamy wszystkie metody. Propozycje dla endpoint i namespace akceptujemy i na tym kończy się działanie wizarda.
Co ten pan na zrobił ? Po pierwsze wygenerował dokument WSDL opisujący naszą usługę oraz stworzył interfejs dla naszej klasy Exchange.

Teraz robimy make całego projektu. Następnie odnajdujemy na liście w nawigatorze Resources -> WebServices.deploy. Włączamu właściwosci i na karcie WEB-INF/classes -> Filters upewniamy się, że jest wszystko zaznaczone oprócz pliku *.cdi.



Akceptujemy i wybieramy Resources -> WebServices.deploy -> deploy to -> localWS
W tym momencie nasza usługa powinna być już aktywna:)

Ok Ok... już prawie wszystko, teraz by się nam przydała aplikacja kliencka i idziemy na piwko.

Dodajemy do projektu Buissner Tier -> Web services -> Web service Stub/Skeleton.
Odnajdujemy nasz plik WSDL (powinien być w katalogu src projektu), i zaznaczamy opcje Generate Main Method Into Stub. Nie wiem czemu zawsze jestem proszony o podanie nazwy pakietu ale trzeba coś wpisać: ExchangeClient u mnie.
Upewniamy się czy wszystkie metody są zaznaczone i kończymy wizarda.

Super! Mamy już aplikacje kliencką !:) Odnajdujemy linie w metodzie main :
// Add your own code here.
i pod nią wklepujemy
System.out.print( "Kurs dolara: " + stub.getUSD() );
System.out.print( "Kurs euro: " + stub.getEUR() );
System.out.print( "Kurs rubla: " + stub.getRUB() );
System.out.print( "Kurs lira maltańskiego: " + stub.getMTL() );


Nie pozostało nam nic innego jak uruchomić naszą nową klasę która po chwili powinna wypluc w konsoli nasze "aktualne" kursy walut.



To wszystko:) Moim celem było pokazanie tylko jak w prosty i szybki sposób postawić sobie bezstanowy web service. Mając już tę wiedzę można się już dalej bawić tworząć coś bardziej użytecznego i rozbudowanego.

Nie jestem specem od Javy więc jeśli jakieś uwagi/sugestie to prosze pisać ;)
To samo tyczy się pytań.

Linki:
Oracle jDeveloper
JDK
Understaning WSDL PL (.doc)

Brak komentarzy:

Prześlij komentarz