Talk is cheap show me the code. L.T.

Örnek Web Servisi Uygulaması

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…

Gerekenler…

4.Jigloo Designer (4.6.4)

http://cloudgarden1.com/update-site/ )

İşe IP konfigürasyonlarını yapmaktan başlıyoruz.

Server IP : 192.168.0.1 /24

Client IP : 192.168.0.2 /24

Ayrıca aynı ağda olduklarından da emin olmak gerekir.

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.

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:

1.Yeni XML işleme(process) çekirdeği modeli, AXIOM (Axis Object Model)
2.A blocking ve non-blocking istemci API (application programming interface)
3.WS-Addressing desteği
4.HTTP (Hypertext Transfer Protocol), SMTP (Simple Mail Transfer Protocol), ve TCP (Transmission Control Protocol) iletişimi için destek
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.
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.
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.

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.

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 9090 portunu kullandığı için, localhost’a bu porttan bağlanıyor. Bu wsdl Client tarafında oluşturacağımız projemizde kullanılacaktır.

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

 

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.

Projemize sqğ tıklayıp New>Other>Web Services>Web Service Client Tıklıyoruz.
! Önemli

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

http://localhost:9090/ws-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 192.168.1.1/24 olarak belirlemiştik.  Yeni linkimiz

http://192.168.1.1:9090/ws-server/services/HesapIslemleri?wsdl 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.

İş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.

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

()));

}

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.

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.
Ayrıca Java Web Servisleriyle alakalı güzel bir döküman daha : Java Web Service pdf.
Zaman ayırdığınız  için teşekkür ederim.




( 35850 )

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>