Web Services

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 34

Kocaeli ni. Bilgisayar Mhendislii Dnem Projesi Danman : Yrd. Do. Dr.

Ahmet Sayar

Web servisleri Web zerinden servis veren program paracklardr. Haziran 2000'de ortaya km ve birok yazlm firmas tarafndan youn bir destek bulmutur. nternet zerinde uygulama btnletirmesi iin yntem arayan birok yazlm gelitirici firma ve kurum Web servisi modeli konusuna ynelmilerdir. Bu modeli destekleyen Microsoft, IBM, Sun, HP, Oracle ve daha birok firma bu konuda youn bir ekilde almakta, Web servisleri yazlm ve uygulama gelitirme aralar sunmaktadr. Firmalarn bu konudaki youn desteinden dolay, uygulama btnletirmesi konusunda ortaya kacak hakim ortamn Web servisleri modeline dayanaca ngrlmektedir.

Web zerinden verilen bu servisler standart HTTP protokol ile olmaktadr. Bu da herkesin bu protokol vastas ile bir Web servisine ulaabileceini gstermektedir. Bir kullancnn HTTP zerinden bir Web servisini kullanmasna RPC (Remote Procedure Call) denilmektedir. HTTP zerinden yaplan bu armlara kar SOAP (Simple Obect Access Protocol) denilen protokol XML ktlar retir. Bu sayede standart bir veri paylam arac olan XML ile istenilen veriler alnp kullanlabilir.

Web servislerinin popler olmasnn en byk nedeni platform ve dilin bamsz olmasdr. Web servisleri ak nternet standartlarna dayanr. Henz gelime ve olgunlama aamasnda olan bu modelle ilgili olarak bu aamada ortaya kan ve kullanlan ekirdek standartlar SOAP, WSDL ve UDDI'dr. Ayrca standart nternet teknolojilerini kullandndan dolay, uygulamalara ulam kolaydr ve arlan programlar gvenlik duvarlarna taklmazlar.

Web servisi modeli ana birimin etkileimine dayanr. Bu birimler unlardr:

Servis Salayc (Servis Provider): stemcilerin salaycda bulunan servislere eriimini salar. Kendi sitesinde bulunan Web servisleri tanmn servis kayt birimine (service registry) kaydederek bu servisinin nasl arlacan belirtir. Servis stemcisi (Service Requester): Servis salaycsnda bulunan Web servislerini ararak kullanan istemci uygulamalardr. Web servisinin nasl arlacan ve ilgili parametreleri servis kayt biriminden arayarak bulur ve arr. Servis Kayt Birimi (Service Registry): Servis salayclarnn yaynladklar Web servisi tanmlarn saklar ve aranp bulunmasn salar. Servis salayclar, servis kayt birimini tarayarak istedii servisler hakknda bilgi alabilir. Servis kayt birimi her servisin nasl arlaca konusunda tanm bilgileri ierir.

1. 2. 3.

4.
5.

6.

Web servisi istemcisinin bir servis salaycdan bir servisi armas aamasndaki temel admlar yledir; Web Servisi stemcisi (SOAP Client) servis kayt biriminden (UDDI) Web servisini bulur. stemci bir SOAP mesaj hazrlar. Bu SOAP mesaj bir XML belgesidir. stemci SOAP mesajn Web sunucu veya uygulama sunucusunda alan SOAP istek dinleyicisine gnderir. stek dinleyiciler gelen isteklere cevap veren sunucu programlardr. Bir JSP, ASP, CGI veya ISAPI program olabilir. SOAP sunucu, gelen SOAP mesajn ayrtrr ve gerekli parametreleri gndererek istenen nesnenin istenen yntemini arr. arlan nesnedeki yntem alr ve sonular SOAP sunucusuna gnderir. SOAP sunucusu gelen sonucu SOAP mesaj formatnda biimlendirerek istemciye gnderir. stemci gelen SOAP mesajnn iindeki bilgileri alarak istekde bulunan programa gnderir.

1) SOAP (Simple Object Access Protocol): nternet zerinde Web servislerini altrmak iin kullanlan protokoldr. Bir SOAP uygulamas gelitirmek iin istemci ve sunucuya SOAP gelitirme aralar ile birlikte gelen ktphanelerin yklenmesi gerekmektedir. Bu ktphaneler bir XML parser ve SOAP ilemcisi ierir. stemci SOAP uygulamas bir SOAP istek mesaj oluturarak, bu istei SOAP sunucusunda tanmlanm servis u noktalarndan (end point) birisi tarafndan altrlmas iin gnderir. SOAP sunucusu ilgili servisi altrdktan sonra SOAP yant mesaj hazrlar. Hazrlanan SOAP yant mesaj istemciye iletilir. SOAP mesaj HTTP POST metodu veri paketinin iinde gnderilir. Bir SOAP mesaj bir SOAP zarfndan (SOAP envelope) oluur. SOAP zarf istee bal bir SOAP bal (SOAP header) ve SOAP gvdesinden (SOAP body) oluur. SOAP gvdesi arlacak metot ve metodun ierdii parametreleri ierir.

2 ) WSDL (Web Services Description Language): Bir uygulamann bir Web servisini kullanmas iin Web servisinin nasl arlacann, arayznn, hangi protokollerin ve kodlama standartlarnn kullanlacann belirtilmesi gerekir. WSDL Web servisini tanmlayan bir XML belgesidir. Bir anlamda datk programlamada kullanlan IDL'e (Interface Definition Language Arayz Tanmlama Dili) benzer. Web servisi tanm, ilemler, giren ve kan mesaj biimleri, a ve port adresleri gibi bilgileri tanmlar. Bir Web servisi tanm belgesi aadaki temel elemanlar ierir:
1. 2. 3. 4. 5. 6.

Types: Mesajlarda kullanlacak veri tiplerini belirtir. Message: letiimde kullanlacak mesajlar tanmlar. PortType: Web servisinin ierdii ilemleri (methods) ve ilgili mesajlar tanmlar. Binding: lem ve mesajlarda kullanlacak veri biimlerini tanmlar. Port: Binding ve Web adresinden oluan servis noktasn tanmlar. Web adresi servisin altrlaca URL'dir. Service: Kullanlan portlar kmesidir.

3 ) UDDI (Universal Description Discovery and Integration) : Bir Web servisini kullanmak iin kullancnn, Web servisi salayan kurumlar ve bu kurumlarn verdikleri Web servislerinin neler olduunu bilmesi gerekmektedir. UDDI ksaltmasnda geen Evrensel, Tanm, Bulu ve Btnletirme kelimelerinin ifade ettii gibi UDDI kurumlarn kendilerini, saladklar servisleri yaynlayarak tanmlamalarn ve bu bilgilerin daha sonra dier kurumlarca taranp bulunmasn salayan bir standarttr. UDDI Kurum Kayt Servisi (UDDI Business Registry) kurum ve Web servisleri bilgilerini saklayan sunuculardr. Bu sunucular servis salayclarndan gelen bilgilerini kendi veritabanlarna kayt ederek dier kurumlarn eriimine amaktadr. u anda aktif olarak alan kurum kayt sunucular uddi.microsoft.com ve uddi.ibm.com'dur. UDDI sunucular kurum ve servis kayt, gncelleme ve tarama ilemlerini Web servisleri (SOAP mesajlar) ile gerekletirmektedir.

Eclipse Indigo, Tomcat, Axis2, Jigloo

Ama : Ayn networkte bulunan 2 bilgisayardan birini Server, dierini Client olarak kullanarak; web servisi yaynlamak. Hibir gvenlik engeline taklmadan, Server makinamzda bulunan datalar Client makinamza ekebilmek ve istenilen Fonksiyonlar kullanmak

1. 2. 3. 4.

Eclipse Indigo (3.7.1) Apache Axis2 (1.6.1) Apache Tomcat (6.0.33) Jigloo Designer (4.6.4)
( http://cloudgarden1.com/update-site/ )

Not : ndirmek iin tklayn

lk bata IP ayarlarn yapyoruz. Server IP : 192.168.0.1 /24 Client IP : 192.168.0.2 /24 Ayrca ayn ada olduklarndan da emin olmak gerekir.

Eclispe atktan sonra kendi dizininde bir workspace (alma alan) oluturuyoruz. (C:\eclipse-jee-indigo-win32\EclipseCalismalar gibi) Oluturulan bu dizinde eclipse kendi ayarlarn, plug-in lerini yklyor. Projeler varsaylanda bu dizine oluturuluyor. Tomcati indirdikten sonra onu da eclipse gibi yine C: dizinine iindeki bir klasre amakta fayda var. Balant ilemlerinin yapmak iin: **Eclispe>Window>Show Views>Servers Sol tarafta bir alan alacaktr. Sa tlayp Add>New Server tklayp, Tomcat srmn seiyoruz ve C: dizinine am olduumuz Tomcat klasrnn yolunu belirtiyoruz. Ve Finish diyoruz.

Neden Axis2 Kullandk ?


Axis 2, web servisler iin oluturulmu ekirdek makinadr(core engine). Bize SOAP kullanlarak dizayn ve yazma salayan apache tarafndan gelitirilmi proje diyebiliriz. Java ve C programlama dillerini desteklemektedir. Axis 2 baz zellikleri unlardr: Yeni XML ileme(process) ekirdei modeli, AXIOM (Axis Object Model) A blocking ve non-blocking istemci API (application programming interface) WS-Addressing destei HTTP (Hypertext Transfer Protocol), SMTP (Simple Mail Transfer Protocol), ve TCP (Transmission Control Protocol) iletiimi iin destek

1. 2.

3. 4.

Binary dosyasn istediimiz herhangi bir dizine atktan sonra Eclipse IDEsini ayoruz. Menden srasylaWindow -> Preferences seeneini tklyoruz. Alan menden Web Servicesdan Axis2 Prefences seeneini seiyoruz. Karmza aadaki resimdeki gibi bir ekran gelecektir. Axis2nin kurulu olduu dizini seiyoruz.

ncelikle bir web application oluturuyoruz. File>New>Dynamic Web Application ksmndan Project Name olarak ws-server ismini verdik. Runtime Server olarak Tomcat 6.0 n seilmi olmas gerekiyor. Ardndan Next ve Finish ile projeyi oluturuyoruz. Web Servis olarak yaynlayacamz Classmz oluturmamz gerekiyor. Biz uygulama olarak basir bir hesap makinas uygulamas yazacaz. HesapIslemleri.java isminde bir class oluturup, iine metotlarm yazyorum.

Eclipse IDE nin sol tarafnda bulunan Project Explorer ksmnda projemize sa tklayp New> Package tklayp ismine ce.kocaeli.edu.tr diyorum. Ardndan Packagea sa tklay New>Class tkladktan sonra ismine HesapIslemleri yazarak Finish tklyorum.

Sra geldi web Service oluturmaya : Eclipse IDE nin sol tarafnda bulunan Project Explorer ksmnda projemize sa tklayp new>Others>Web Services>Web Service tklyoruz. Alan pencerede Web Service Type ksmnda bottom up Java bean web service, Service Implementation ksmnda da ce.kocaeli.edu.tr seili olmas gerekiyor. Alt ksmda bulanan Hyperlinklerden Server Runtime olarak Tomcat 6.0 seili olmal. Web Service Runtime olarak Apache Axis2 seili olmal. Deitirmek isterseniz hyperlinke sa tlayarak alan pencereden deitirebilirsiniz. Service Project olarak da tabiki oluturduumuz ws-server projemiz seili olmas gerekiyor.Ardndan Finish e tklayarak web service oluturma ilemlerini tamamlyoruz.

Projeye sa tklayp Run as>Run on Server tkladmzda alan sayfada services>HesapIslemleri ni ayoruz. Alan sayfa web servisimizin wsdli oluyor. Benm bilgisayarmda Tomcat 9090 portunu kulland iin, localhosta bu porttan balanyor. Bu wsdl Client tarafnda oluturacamz projemizde kullanlacaktr.

http://localhost:9090/ws-server/services/HesapIslemleri?wsdl

Server Tarafndaki ayarlamalarmz bittikten sonra imdi client tarafndayz. stersek ayn ada birbirini gren farkl bir bilgisayarda da alabiliriz. Yada ayn bilgisayar da localhost dan balanabiliriz. File>new>Dynamic Web Application diyip, proje ismine ws-client dedikten sonra
finishe tklayoruz. Oluan projemiz bir web application gibi dursa da, biz ilerki ayarlamalarmzla bunu bir desktop application olarak kullanacaz.

Projemize sq tklayp New>Other>Web Services>Web Service Client Tklyoruz. Service Definition Ksmna, Server tarafnda belirttiimiz wsdl linkini yazmamz gerekiyor. Daha nceden de dediim gibi eer localde alyorsak http://localhost:9090/wsserver/services/HesapIslemleri?wsdl linkteki localhost aynen kalr. Ancak Client bilgisayarmz uzakta olacaksa, linkteki localhost yerine daima hizmet verecek olan servern IP adresini yazarz. Balangta belirttiimiz gibi, Server olarak kullanacamz bilgisayarn IP sini 192.168.1.1/24 olarak belirlemitik. Yeni linkimiz

http://192.168.1.1:9090/ws-server/services/HesapIslemleri?wsdl olmu oldu. Server tarafnda yaptmz gibi yine Web Service Runtime olarak Axis2 yi, Client Project olarak ws-client seiyoruz. Ve Finish tklyoruz.

in iine birazck grsellik katmak iin, form oluturacaz. Bunun iin eclispe bir plug-in ekliyeceiz. Help>Install New Software ksmndan Add Url ksmna, daha nce gerekenler ksmnda vermi olduumuz, Jigloo Designern linkini yazp, gerekli yklemeyi yapyoruz. Tasarm ksmna girmeden, ksaca bahsedip gemek istiyorum. Yklemeyi baaryla yaptktan sonra: File>New>Other>Gui Forms>Swing> Jframe diyerek form oluturulabilir.

Her Jbutton, JtextBox ve JRadioButton iin temel eventleri yazdktan sonra asl bizi ilgilendiren ksm Web Servera balanma ksm : double s1= Double.valueOf(txtSay1.getText()); double s2= Double.valueOf(txtSay2.getText()); HesapIslemleriStub stub = new HesapIslemleriStub(); if (islem.equals("1"))// Toplama { HesapIslemleriStub.Topla topla = new HesapIslemleriStub.Topla(); topla.setSay1(s1); topla.setSay2(s2); HesapIslemleriStub.ToplaResponse response = stub.topla(topla); lblSonuc.setText(String.valueOf(response.get_return

()));
}

Kod ksmn aklayacak olursak : Eer ncesinde lem Butonuna basmadan nce hangi radio butona tklanld ise, islem string ifademiz bir deer alr. (1 Toplama, 2 cikarma gibi) rnek kodda Eer toplama radio butonu tklanld ise, islem string 1 olacandan, rnekteki para run olacaktr. HesapIslemleriStub nesnesi ile wsye balanp, gerekli metodumuzun nesnesini olurturuyoruz. Ve Doublea evirdiimiz Textbox deerlerini metoda gnderiyoruz. Projeyi Run etmek iin, Anasayfa.javaya Sa tklayp>Run as>Java Application diyoruz. te bu noktada Projeyi ilk bata bir dynamic web app olarak oluturmamza ramen, bir desktop app gibi kullanyoruz.

Client projesini uzak bilgisayarda kullanmak iin, (tabi eer wsdli IP olarak verdiyseniz) ws-client executable jar file a evirmek gerekecektir.Bunun iin ws-clienta sa tklayp, Export>Export>Executable Jar File seip, Launch Conf ksmndan ise Anasayfa.java y semeniz gerekir. nk static Main metoduna o sahiptir. Ve export edilecek yeri seiyoruz ardndan finish diyip bitiyoruz. Bu biraz zaman alabilir. Sorduu tm sorularda Ok butonunu tklayn.

Recep Bostanc

You might also like