NETBEANS*TE AX*S WEB SERV*SLER* GEL**T*RME

Download Report

Transcript NETBEANS*TE AX*S WEB SERV*SLER* GEL**T*RME

NETBEANS’TE AXİS 2 ile WEB
SERVİS GELİŞTİRME
Hazirlayan Serkan Macit
Kocaeli Universitesi Bilgisayar Muhendisligi
Proje Calismasi
NETBEANS’TE AXİS 2 WEB SERVİS
GELİŞTİRME
AXIS 2 Nedir?
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. Ayrıca REST ve Spring Framework desteği de mevcuttur.
Axis 2’nin 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
Daha detaylı bilgi için burayı ziyaret edebilirsiniz
http://axis.apache.org/axis2/java/core/

1.
2.
3.
4.
AXIS 2 ve NetBeans Kurulumu
http://netbeans.org/downloads/ sitesinden Netbeans 6.9.1 ALL sürümünü indiriniz.(Axis 2 Netbeans 7
sürümüne şu an uyumlu değildir.)Bu sürüm içerisinde Tomcat 6.0.26 yı da barındırmaktadır ve böylece
Netbeans kurulumuyla beraber Tomcat i de işlemsiz bilgisayarımıza kurmuş oluruz.Tomcat bir internet
sunucusudur ve web servislerimiz bu sunucu üzerinde çalışacaktır.(JDK 6 VE JRE 6 yükleme öncesi
kurulmuş olmalıdır.)
Daha sonra http://axis.apache.org/axis2/java/core/download.cgi sitesinden Axis 2 1.6.0 ‘ın WAR
sürümünü arşiv dosya şeklinde indiriniz.İleride bu paketi sunucu ya açacağız.
Netbeans ‘i açarak Araçlar-Eklentiler-Uygun Eklentiler yolunu izleyerek Axis2 Support eklentisini
kurunuz.Bu eklenti kodlarımızı yazarken bize yol gösterici olacaktır.
Tomcat Sunucusu ‘na alternatif olarak GlassFish Sunucusu da mevcuttur fakat hız farkından dolayı Tomcat i
kullanacağız.Tomcat varsayılan olarak C :/ProgramFiles içine kurulur.Elinizdeki Axis 2 dosyasını
CATALINA_BASE/webapps dizinine açın.’’CATALINA_BAS E’’ dizininin neresi olduğunu öğrenmek için
Netbeans ‘te servisler tabını kullanarak Sunucular sekmesinden Tomcat ‘i başlatın.Daha sonra Tomcat
Sunucusuna sağ tıklayıp Properties seçeneğine girin.Burada Connection sekmesine tıkladığınızda bu adresin
neresi olduğunu göreceksiniz.(Bknz şekil 1) .Bu işlem sonucunda dizinde axis2.war dosyası oluşacaktır.
6.Daha sonra Tomcat Sunucusunu tekrar başlatın .Bu işlem sonucunda Tomcat axis2.war dosyasını aynı
dizindeki axis2 klasörüne çıkaracaktır.
7.Netbeans’te Araçlar-Seçenekler menüsünü izleyiniz ve açılan pencereden Axis2 tabına tıklayın.Burada
‘’target location for Axis2 AAR files’’ yazan yere CATALINA_BASE (not TOMCAT_HOME)/ webapps/axis2
Dizinini girin.Daha sonra ‘’Axis2URL ‘’kısmına uygun bir port adresi giriniz.(8084-8080).Son olarak ‘’ Use
Tomcat Manager for Deployment’’ seçeneğini de işaretleyerek ‘’OK’’ e basınız.(bknz Şekil:2)
8.Axis2 URL deki port numarasının Tomcat Sunucu su için doğru olup olmadığını kontrol için Tomcat i başlatın
ve Coyote HTTP/1.1 in kullandığı port numarasını bakın.Yanlışsa kullanılan port numarasını giriniz.Aşağıdaki
şekilde 4. satır bize Coyote HTTP/1.1 ile ilgili bilgi vermektedir.
Bu işlemlerin sonucunda artık Netbeans,Tomcat Sunucusu ve Axis2 , web servis geliştirmek için uygun
duruma gelmiştir.
AXIS 2 Web Servis Geliştirme
1.
2.
3.
4.
5.
6.
Netbeans-File-New Project –Java-Java Library Project menülerini kullanarak bir java projesi
oluşturulur.
Daha sonra projeye isim verilir (AxisHello) ve kaydedileceği dizin seçilir.
Oluşturulan proje üzerine sağ tıklanarak New-Other-Web Services-Axis2 Web Service From JavaCreate Empty Web Service menüsü takip edilir.En son web servis ismi , kaydedileceği dizin seçilir
ve örnek bir method oluşturma seçeneği işaretlenir.Finish butonuna tıklanınca web servis
oluşturma işlemi birmiş olur. (bknz şekil 3)
Web Service ‘i çalıştırmak için önce Tomcat Sunucusunun çalışıp çalışmadığı kontrol edilir ve
sonrasında proje altında Axis2 Web Services-Deploy To Server menüleri izlenir ve web servis
çalışmaya hazır hale getirilir.
Programı test etmek için Axis2 Web Services menüsü altında ilgili web servis bulunur ve altında
‘’hello’’ isimli fonksiyona sağ tıklanarak Test Operation In Browser karşımıza aşağıdakine benzer
bir çıktı gelir.(bknz şekil 4).
Projede .java dosyamızın olduğu paket altına gidersek buradaki class içinde hello fonksiyonunu
görürüz .Bu kısma biz de dört işlem yapan 4 tane fonksiyon daha ekleyip yukarıdaki işlemleri
tekrarlayabiliriz.
Şekil 3
Şekil 4
Şekil 4’te görüldüğü üzere program çıktısı XML halindedir ve istediğimiz çıktı bu XML arasına
gömülüdür.Ayrıca çıktı bir web sayfası olduğundan adres çubuğundan name değişkenine farklı
isimler atayarak farklı çıktılar üretebiliriz.
Axis 2 Web Servis Client Oluşturma
Bu kısımda Bir WSDL dosyasından nasıl bir web servis istemcisi oluşturacağımızı göreceğiz.Bunun için
sırasıyla aşağıdaki adımlar takip edilir.
1.
File-New Project-Java Web-Web Application menüleri yardımıyla istenilen isimde ve dizinde bir
web uygulaması oluşturulur.
2.
Proje ismine sağ tıklanarak New-Other-Web Services-Web Service Client menüleri izlenerek
istemci oluşturmaya başlanır.Bizden bu aşamada web servisimizin wsdl url’sini girmemiz
istenir.Bunu da şöyle bulabiliriz.Önce Tomcat çalıştırılır.Kullandığımız port 8084 idi.İnternet
tarayıcıya http://localhost:8084/axis2/services/listServices yazıldığında sunucudaki web
servislerin listesine ulaşırız.Buradan da istediğimiz servise tıkladığımızda adres çubuğunda wsdl
url’si oluşur.Bu adresi kullanarak istemci oluşturmaya devam edilir.Daha sonra paket ismi boş
bırakılır ve jax versiyon olarak JAX-WS seçilir.Finish butonuna tıklanır ve web service istemcisi
oluşur.HesapMak adlı bir web servis oluşturduğumuz düşünülürse önümüze şekildeki gibi bir
proje ekranı gelir.(bknz şekil 5)
Bu aşamada istemci web servis sunucusuna bağlanmış haldedir.Proje penceresinde Generated Sources tabı
altında web servise ve web servi s e ait fonksiyonlara erişim ile ilgili classlar yer almaktadır.Daha altta web
references kısmı görülür .Burada da web servis ismi ve yapabileceğimiz operasyonlar listelenir.Web Pages
tabı altında da index.jsp dosyası vardır ve bu da istemci ile kodlarımızı yazacağımız jsp dosyasıdır.(bknz şekil
6)Bu sayfada kodlama yapabilmemiz için temel html kodlarına hakim olmamız gerekmekedir.
NOT: Class isimlerinde Türkçe karakterler veya «ı,i» kullanılması durumunda proje nin
‘’Generated Sources’’ kısmında syntax hatası uyarısı alırsınız.Bu durumda da proje
çalışmaz ve .jar veya .war haline getirilemez.
BASİT BİR HESAP MAKİNESİ UYGULAMASI
public String hello(String name) {
return "Hello "+name;
}
public int topla(int a, int b) {
int c = a + b;
return c;
}
public int cikar(int a, int b) {
int c = a - b;
return c;
}
public int carp(int a, int b) {
int c = a * b;
return c;
}
public int bol(int a, int b) {
int c=0;
if(b!=0)
c = a / b;
return c;
}
Yukarıdaki kodlar Hello isimli web servis uygulamamızın içindeki SayHello.java dosyasındaki dört işlem
fonksiyonlarına aittir. Şimdi bunları istemci tarafından nasıl yöneteceğimizi görelim.
Daha önce index.jsp adlı dosyamızın kodlarını şekil 5 te görmüştük.Bu dosya sayesinde web servis
istemcisi web servis fonksiyonlarını kullanarak çeşitli işlemler yapabilir.Şimdi buradaki kodları sırasıyla
açıklarsak;
•
action='http://192.168.1.41:8084/axis2/services/Sayhello/hello‘ ile form üzerinde işlem
yapıldığında ulaşılması gereken web servis fonksiyonunun Tomcat üzerindeki dizinini verdik.burada
localhost ifadesi yerine ip adresi kullandık.Çünkü istemciler makine bağımsız olmalıdır.Bu uygulamayı
bu şekilde aynı ağdaki başka bilgisayarlarda da sorunsuz çalıştırabiliriz.
•
method="post" target="_blank"> post ile veriyi gönderiyoruz ve sonucu yeni bir sayfada
görüntülüyoruz.
•
<td>Who are you:</td> , <td><input type="text" size="30" name="name"></td> ifadeleri ile
bir textbox oluşturup buradan girilen input değerini hello fonksiyonunun name adlı
parametresine aktarıyoruz.
•
<td align="right"><input type="submit" value="Hello"></td> ifadeleri ile bir hello isimli bir buton
oluşturup bu buton ile işlemlerin yürümesini sağlıyoruz.
•
Kodların devamını incelediğimizde diğer fonksiyonlara da aynı şekilde ulaşıldığı görülür. Bu şekilde
kodlama bitirilip sayfa sunucuya deploy edilirse şekil 6 daki bir arayüz oluşturmuş oluruz.
Burada add fonksiyonunu için 5 ve 6 değerini girip çıktı ekranını görelim:
Görüldüğü gibi 11 sonucu <ns:return tagları arasında dönmüştür. Diğer fonksiyonlar da aynı
şekilde çalıştırılabilir ve sonuç buna benzer bir çıktı üzerinde test edilebilir
NOT: Netbeans te
istemci üzerine sağ tıklanıp ‘’Clean AndBuild ‘’ işlemi yapılırsa projenin
olduğu dizinde dist klasöründe aynı isimli .war uzantılı bir dosya elde edilir.Bu dosya Tomcat
üzerinde deploy edilmek koşuluyla aynı ağdaki başka bilgisayarlarda da çalıştırılabilir.
BİR SONRAKİ AŞAMADA YAPILABİLECEK İYİLEŞTİRMELER
•
XML çıktılar parse edilip sayfa kullanıcıya HTML olarak sunulabilir.
•
Sonuçlar MySQL vb. bir veritabanına kaydedilebilir.
•
Arayüz HTML &CSS kullanılarak daha iyi ve düzenli bir görünümde tasarlanabilir.
•
İstemci olarak bir web uygulaması değil de masaüstü uygulaması tasarlanabilir.
•
IP vb değerler dinamik olarak alınabilir.(properties dosyası ve hardcoding)
DiNLEDİĞİNİZ İÇİN TEŞEKKÜRLER
Serkan Macit