Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanBerke Batuk Değiştirilmiş 10 yıl önce
1
Java’da Eclipse ortaminda Axis2 ile Web Servis Uygulamasi
Kocaeli Üni. Bilgisayar Mühendisliği Dönem Projesi Danışman : Yrd. Doç. Dr. Ahmet Sayar
2
Kısa geçmişi ve önemi Web servisleri Web üzerinden servis veren program parçacıklarıdır. Haziran 2000'de ortaya çıkmış ve birçok yazılım firması tarafından yoğun bir destek bulmuştur. İnternet üzerinde uygulama bütünleştirmesi için yöntem arayan birçok yazılım geliştirici firma ve kurum Web servisi modeli konusuna yönelmişlerdir. Bu modeli destekleyen Microsoft, IBM, Sun, HP, Oracle ve daha birçok firma bu konuda yoğun bir şekilde çalışmakta, Web servisleri yazılım ve uygulama geliştirme araçları sunmaktadır. Firmaların bu konudaki yoğun desteğinden dolayı, uygulama bütünleştirmesi konusunda ortaya çıkacak hakim ortamın Web servisleri modeline dayanacağı öngörülmektedir.
3
Tanıtım… Web üzerinden verilen bu servisler standart HTTP protokolü ile olmaktadır. Bu da herkesin bu protokol vasıtası ile bir Web servisine ulaşabileceğini göstermektedir. Bir kullanıcının HTTP üzerinden bir Web servisini kullanmasına RPC (Remote Procedure Call) denilmektedir. HTTP üzerinden yapılan bu çağrımlara karşı SOAP (Simple Obect Access Protocol) denilen protokol XML çıktıları üretir. Bu sayede standart bir veri paylaşım aracı olan XML ile istenilen veriler alınıp kullanılabilir.
4
Tanıtım… Web servislerinin popüler olmasının en büyük nedeni platform ve dilin bağımsız olmasıdır. Web servisleri açık İnternet standartlarına dayanır. Henüz gelişme ve olgunlaşma aşamasında olan bu modelle ilgili olarak bu aşamada ortaya çıkan ve kullanılan çekirdek standartlar SOAP, WSDL ve UDDI'dır. Ayrıca standart İnternet teknolojilerini kullandığından dolayı, uygulamalara ulaşım kolaydır ve çağrılan programlar güvenlik duvarlarına takılmazlar.
5
Web Servisi Modeli
6
Web Servisi Modeli Web servisi modeli üç ana birimin etkileşimine dayanır. Bu birimler şunlardır: Servis Sağlayıcı (Servis Provider): İstemcilerin sağlayıcıda bulunan servislere erişimini sağlar. Kendi sitesinde bulunan Web servisleri tanımını servis kayıt birimine (service registry) kaydederek bu servisinin nasıl çağırılacağını belirtir. Servis İstemcisi (Service Requester): Servis sağlayıcısında bulunan Web servislerini çağırarak kullanan istemci uygulamalardır. Web servisinin nasıl çağırılacağını ve ilgili parametreleri servis kayıt biriminden arayarak bulur ve çağırır. Servis Kayıt Birimi (Service Registry): Servis sağlayıcılarının yayınladıkları Web servisi tanımlarını saklar ve aranıp bulunmasını sağlar. Servis sağlayıcıları, servis kayıt birimini tarayarak istediği servisler hakkında bilgi alabilir. Servis kayıt birimi her servisin nasıl çağırılacağı konusunda tanım bilgileri içerir.
7
Web Servisi Modeli Web servisi istemcisinin bir servis sağlayıcıdan bir servisi çağırması aşamasındaki temel adımları şöyledir; Web Servisi İstemcisi (SOAP Client) servis kayıt biriminden (UDDI) Web servisini bulur. İstemci bir SOAP mesajı hazırlar. Bu SOAP mesajı bir XML belgesidir. İstemci SOAP mesajını Web sunucu veya uygulama sunucusunda çalışan SOAP istek dinleyicisine gönderir. İstek dinleyiciler gelen isteklere cevap veren sunucu programlardır. Bir JSP, ASP, CGI veya ISAPI programı olabilir. SOAP sunucu, gelen SOAP mesajını ayrıştırır ve gerekli parametreleri göndererek istenen nesnenin istenen yöntemini çağırır. Çağırılan nesnedeki yöntem çalışır ve sonuçları SOAP sunucusuna gönderir. SOAP sunucusu gelen sonucu SOAP mesajı formatında biçimlendirerek istemciye gönderir. İstemci gelen SOAP mesajının içindeki bilgileri alarak istekde bulunan programa gönderir.
8
Web Servisi Standartları
1) SOAP (Simple Object Access Protocol): İnternet üzerinde Web servislerini çalıştırmak için kullanılan protokoldür. Bir SOAP uygulaması geliştirmek için istemci ve sunucuya SOAP geliştirme araçları ile birlikte gelen kütüphanelerin yüklenmesi gerekmektedir. Bu kütüphaneler bir XML parser ve SOAP işlemcisi içerir. İstemci SOAP uygulaması bir SOAP istek mesajı oluşturarak, bu isteği SOAP sunucusunda tanımlanmış servis uç noktalarından (end point) birisi tarafından çalıştırılması için gönderir. SOAP sunucusu ilgili servisi çalıştırdıktan sonra SOAP yanıt mesajı hazırlar. Hazırlanan SOAP yanıt mesajı istemciye iletilir. SOAP mesajı HTTP POST metodu veri paketinin içinde gönderilir. Bir SOAP mesajı bir SOAP zarfından (SOAP envelope) oluşur. SOAP zarfı isteğe bağlı bir SOAP başlığı (SOAP header) ve SOAP gövdesinden (SOAP body) oluşur. SOAP gövdesi çağırılacak metot ve metodun içerdiği parametreleri içerir.
9
Web Servisi Standartları
2 ) WSDL (Web Services Description Language): Bir uygulamanın bir Web servisini kullanması için Web servisinin nasıl çağrılacağının, arayüzünün, hangi protokollerin ve kodlama standartlarının kullanılacağının belirtilmesi gerekir. WSDL Web servisini tanımlayan bir XML belgesidir. Bir anlamda dağıtık programlamada kullanılan IDL'e (Interface Definition Language – Arayüz Tanımlama Dili) benzer. Web servisi tanımı, işlemler, giren ve çıkan mesaj biçimleri, ağ ve port adresleri gibi bilgileri tanımlar. Bir Web servisi tanım belgesi aşağıdaki temel elemanları içerir: Types: Mesajlarda kullanılacak veri tiplerini belirtir. Message: İletişimde kullanılacak mesajları tanımlar. PortType: Web servisinin içerdiği işlemleri (methods) ve ilgili mesajları tanımlar. Binding: İşlem ve mesajlarda kullanılacak veri biçimlerini tanımlar. Port: Binding ve Web adresinden oluşan servis noktasını tanımlar. Web adresi servisin çalıştırılacağı URL'dir. Service: Kullanılan portlar kümesidir.
10
Web Servisi Standartları
3 ) UDDI (Universal Description Discovery and Integration) : Bir Web servisini kullanmak için kullanıcının, Web servisi sağlayan kurumları ve bu kurumların verdikleri Web servislerinin neler olduğunu bilmesi gerekmektedir. UDDI kısaltmasında geçen Evrensel, Tanım, Buluş ve Bütünleştirme kelimelerinin ifade ettiği gibi UDDI kurumların kendilerini, sağladıkları servisleri yayınlayarak tanımlamalarını ve bu bilgilerin daha sonra diğer kurumlarca taranıp bulunmasını sağlayan bir standarttır. UDDI Kurum Kayıt Servisi (UDDI Business Registry) kurum ve Web servisleri bilgilerini saklayan sunuculardır. Bu sunucular servis sağlayıcılarından gelen bilgilerini kendi veritabanlarına kayıt ederek diğer kurumların erişimine açmaktadır. Şu anda aktif olarak çalışan kurum kayıt sunucuları uddi.microsoft.com ve uddi.ibm.com'dur. UDDI sunucuları kurum ve servis kayıt, güncelleme ve tarama işlemlerini Web servisleri (SOAP mesajları) ile gerçekleştirmektedir.
11
Eclipse Indigo, Tomcat, Axis2, Jigloo
Örnek Web Servisi Uyg. Eclipse Indigo, Tomcat, Axis2, Jigloo
12
Uygulama Hedefi ! Amaç : Aynı networkte bulunan 2 bilgisayardan birini Server, diğerini Client olarak kullanarak; web servisi yayınlamak. Hiçbir güvenlik engeline takılmadan, Server makinamızda bulunan dataları Client makinamıza çekebilmek ve istenilen Fonksiyonları kullanmak…
13
Gerekenler… Eclipse Indigo (3.7.1) Apache Axis2 (1.6.1)
Apache Tomcat (6.0.33) Jigloo Designer (4.6.4) ( ) Not : İndirmek için tıklayın…
14
Ve Başlıyoruz… İlk başta IP ayarlarını yapıyoruz. Server IP : /24 Client IP : /24 Ayrıca aynı ağda olduklarından da emin olmak gerekir.
15
Eclipse-Tomcat Ayarları
Eclispe açtıktan sonra kendi dizininde bir workspace (çalışma alanı) oluşturuyoruz. (C:\eclipse-jee-indigo-win32\EclipseCalismalar gibi…) Oluşturulan bu dizinde eclipse kendi ayarlarını, plug-in lerini yüklüyor. Projeler varsayılanda bu dizine oluşturuluyor. Tomcat’i indirdikten sonra onu da eclipse gibi yine C: dizinine içindeki bir klasöre açmakta fayda var. Bağlantı işlemlerinin yapmak için: **Eclispe>Window>Show Views>Servers Sol tarafta bir alan açılacaktır. Sağ tılayıp Add>New Server tıklayıp, Tomcat sürümünü seçiyoruz ve C: dizinine açmış olduğumuz Tomcat klasörünün yolunu belirtiyoruz. Ve Finish diyoruz.
16
Axis2 Ayarları Neden Axis2 Kullandık ?
Axis 2, web servisler için oluşturulmuş çekirdek makinadır(core engine). Bize SOAP kullanılarak dizayn ve yazma sağlayan apache tarafından geliştirilmiş proje diyebiliriz. Java ve C programlama dillerini desteklemektedir. Axis 2 bazı özellikleri şunlardır: Yeni XML işleme(process) çekirdeği modeli, AXIOM (Axis Object Model) A blocking ve non-blocking istemci API (application programming interface) WS-Addressing desteği HTTP (Hypertext Transfer Protocol), SMTP (Simple Mail Transfer Protocol), ve TCP (Transmission Control Protocol) iletişimi için destek
17
Axis2 Ayarları Binary dosyasını istediğimiz herhangi bir dizine açtıktan sonra Eclipse IDE’sini açıyoruz. Menüden sırasıylaWindow -> Preferences seçeneğini tıklıyoruz. Açılan menüden Web Services’dan Axis2 Prefences seçeneğini seçiyoruz. Karşımıza aşağıdaki resimdeki gibi bir ekran gelecektir. Axis2’nin kurulu olduğu dizini seçiyoruz.
18
WS-Server Ayarları Öncelikle bir web application oluşturuyoruz.
File>New>Dynamic Web Application kısmından Project Name olarak “ws-server” ismini verdik. Runtime Server olarak Tomcat 6.0 ‘ın seçilmiş olması gerekiyor. Ardından Next ve Finish ile projeyi oluşturuyoruz. Web Servis olarak yayınlayacağımız Class’mızı oluşturmamız gerekiyor. Biz uygulama olarak basir bir hesap makinası uygulaması yazacağız. HesapIslemleri.java isminde bir class oluşturup, içine metotlarımı yazıyorum.
19
WS-Server Ayarları Eclipse IDE nin sol tarafında bulunan Project Explorer kısmında projemize sağ tıklayıp New> Package tıklayıp ismine ce.kocaeli.edu.tr diyorum. Ardından Package’a sağ tıklayı New>Class tıkladıktan sonra ismine HesapIslemleri yazarak Finish tıklıyorum.
20
WS-Server Ayarları
21
WS-Server Ayarları Sıra geldi web Service oluşturmaya :
Eclipse IDE nin sol tarafında bulunan Project Explorer kısmında projemize sağ tıklayıp new>Others>Web Services>Web Service tıklıyoruz. Açılan pencerede Web Service Type kısmında bottom up Java bean web service, Service Implementation kısmında da ce.kocaeli.edu.tr seçili olması gerekiyor. Alt kısımda bulanan Hyperlinkler’den Server Runtime olarak Tomcat 6.0 seçili olmalı. Web Service Runtime olarak Apache Axis2 seçili olmalı. Değiştirmek isterseniz hyperlinke sağ tılayarak açılan pencereden değiştirebilirsiniz. Service Project olarak da tabiki oluşturduğumuz ws-server projemiz seçili olması gerekiyor.Ardından Finish’ e tıklayarak web service oluşturma işlemlerini tamamlıyoruz.
22
WS-Server Ayarları
23
WS-Server Ayarları Projeye sağ tıklayıp Run as>Run on Server tıkladığımızda açılan sayfada services>HesapIslemleri ni açıyoruz. Açılan sayfa web servisimizin wsdl’i oluyor. Benm bilgisayarımda Tomcat portunu kullandığı için, localhost’a bu porttan bağlanıyor. Bu wsdl Client tarafında oluşturacağımız projemizde kullanılacaktır.
24
WS-Client Ayarları Server Tarafındaki ayarlamalarımız bittikten sonra şimdi client tarafındayız. İstersek aynı ağda birbirini gören farklı bir bilgisayarda da çalışabiliriz. Yada aynı bilgisayar da localhost dan bağlanabiliriz. File>new>Dynamic Web Application diyip, proje ismine “ws-client” dedikten sonra finish’e tıklayoruz. Oluşan projemiz bir web application gibi dursa da, biz ilerki ayarlamalarımızla bunu bir desktop application olarak kullanacağız.
25
WS-Client Ayarları Projemize sqğ tıklayıp New>Other>Web Services>Web Service Client Tıklıyoruz. ! Önemlİ Service Definition Kısmına, Server tarafında belirttiğimiz wsdl linkini yazmamız gerekiyor. Daha önceden de dediğim gibi eğer localde çalışıyorsak server/services/HesapIslemleri?wsdl linkteki localhost aynen kalır. Ancak Client bilgisayarımız uzakta olacaksa, linkteki localhost yerine daima hizmet verecek olan server’ın IP adresini yazarız. Başlangıçta belirttiğimiz gibi, Server olarak kullanacağımız bilgisayarın IP sini /24 olarak belirlemiştik. Yeni linkimiz olmuş oldu. Server tarafında yaptığımız gibi yine Web Service Runtime olarak Axis2 yi, Client Project olarak ws-client’ı seçiyoruz. Ve Finish tıklıyoruz.
26
WS-Client Ayarları
27
WS-Client Ayarları İşin içine birazcık görsellik katmak için, form oluşturacağız. Bunun için eclispe bir plug-in ekliyeceğiz. Help>Install New Software kısmından Add Url kısmına, daha önce gerekenler kısmında vermiş olduğumuz, Jigloo Designer’ın linkini yazıp, gerekli yüklemeyi yapıyoruz. Tasarım kısmına girmeden, kısaca bahsedip geçmek istiyorum. Yüklemeyi başarıyla yaptıktan sonra: File>New>Other>Gui Forms>Swing> Jframe diyerek form oluşturulabilir.
28
WS-Client Ayarları
29
WS-Client Ayarları
30
WS-Client Ayarları Her Jbutton, JtextBox ve JRadioButton için temel eventleri yazdıktan sonra asıl bizi ilgilendiren kısmı Web Server’a bağlanma kısmı : 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 ())); }
31
WS-Client Ayarları Kod kısmını açıklayacak olursak : Eğer Öncesinde İşlem Butonuna basmadan önce hangi radio butona tıklanıldı ise, islem string ifademiz bir değer alır. (“1” Toplama, “2” cikarma… gibi) Örnek kodda Eğer toplama radio butonu tıklanıldı ise, islem string 1 olacağından, örnekteki parça run olacaktır. HesapIslemleriStub nesnesi ile ws’ye bağlanıp, gerekli metodumuzun nesnesini olurşturuyoruz. Ve Double’a çevirdiğimiz Textbox değerlerini metoda gönderiyoruz. Projeyi Run etmek için, Anasayfa.java’ya Sağ tıklayıp>Run as>Java Application diyoruz. İşte bu noktada Projeyi ilk başta bir dynamic web app olarak oluşturmamıza rağmen, bir desktop app gibi kullanıyoruz.
32
WS-Client Ayarları
33
WS-Client Ayarları Client projesini uzak bilgisayarda kullanmak için, (tabi eğer wsdl’i IP olarak verdiyseniz) ws-client’ı executable jar file ‘a çevirmek gerekecektir.Bunun için ws-client’a sağ tıklayıp, Export>Export>Executable Jar File seçip, Launch Conf kısmından ise Anasayfa.java yı seçmeniz gerekir. Çünkü static Main metoduna o sahiptir. Ve export edilecek yeri seçiyoruz ardından finish diyip bitiyoruz. Bu biraz zaman alabilir. Sorduğu tüm sorularda “Ok” butonunu tıklayın.
34
Dinlediğiniz için teşekkür ederim
Recep Bostancı
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.