J2EE Uygulamalarinin Gelistirilmesinde Kullanilabilecek Bazi
m
Araçlar ve Örnek Bir Örnek Uygulama Oguz Aslantürk -
[email protected]
i.c o
14/09/2003
J2EE, çok katmanli, bilesen tabanli bir uygulama modeli sunar. Bu, farkli katmanlar için farkli teknolojiler kullanilmasi, birçok kod yazilmasi, bütün bu kodlarin da bir uygulama olusturmak üzere bir araya getirilmesi anlamina gelmektedir. Yazilan kodlarin sinanmasi, derlenmesi, uygulama sunucusunun gerektirdigi sekilde ilgili kilavuzlara kopyalanmasi ve gelistirme sirasinda olusabilecek her türlü degisiklik ya
dil
da ekleme sonucunda bu adimlarin tekrarlanmasi gerekmektedir. Bütün bu islemlerin otomatiklestiril(e)memesi durumunda, uygulama gelistiricilerinin harcadigi zamanin önemli bir kismi bu islemler için harcanacaktir. Dolayisiyla, J2EE düzlemi kullanilarak gelistirilecek bir uygulama için bazi araçlar kullanilmasi kaçinilmazdir.
va
Ayrica uygulamanin gelistirilmesi sirasinda bir de uygulama sunucusu gerekmektedir. J2EE uygulamalarinin düzlemden bagimsiz olma özellikleri göz önüne alindiginda, sunucuya özel çözümlere gidilmedigi sürece, J2EE standartlarini saglayan bütün uygulama sunucularinin, gelistirilen uygulamayi çalistirmak üzere kullanilabilecegi
ww w. ja
söylenebilir.
Günümüzde birçok farkli tümlesik gelistirme ortami, J2EE uygulamalari için gerekli olan
destegi
saglamakta
ve
birçok
farkli
uygulama
sunucusu
ile
tümlesik
çalisabilmektedir. Hangi aracin ve uygulama sunucusunun seçilecegi, uygulamayi gelistiren kurumun yaklasimina baglidir.
Bu belgede, bir J2EE uygulama gelistirme ortami olusturmak üzere kullanilabilecek bazi araçlardan bahsedilecektir. Bu araçlar, farkli araçlarla da çesitli sekillerde bir araya getirilebilirler ve yerlerine kullanilabilecek seçenekler de bulunmaktadir. Dolayisiyla bu belgenin bir basvuru olarak görülmesindense, bazi araçlari kisaca tanitan bir belge olarak degerlendirilmesi daha uygundur.
1
1. IÇINDEKILER IÇINDEKILER...................................................................................................................2
2.
XDoclet – http://xdoclet.sourceforge.net/ ............................................................3
3.
Apache Ant (Another Neat Tool) – http://ant.apache.org/...................................5
4.
JUnit – http://www.junit.org .......................................................................................6
5.
Apache Struts – http://jakarta.apache.org/struts/ ..............................................7
6.
JBoss – http://www.jboss.org...................................................................................9
7.
Eclipse – http://www.eclipse.org ...........................................................................10
8.
Kilavuz Yapisi ve Araçlarin Kurulmasi.......................................................................11
dil
i.c o
m
1.
Kilavuz Yapisi...................................................................................................................... 11 Araçlarin Kurulmasi ............................................................................................................. 12
Applications Alt Kilavuzunun Yapisi ...........................................................................14
va
9.
build.properties kütügü..............................................................................................17
11.
HelloWorld Uygulamasi ............................................................................................18
12.
KAYNAKLAR..............................................................................................................21
ww w. ja
10.
2
2. XDoclet – http://xdoclet.sourceforge.net/
mimarisinde
is
katmaninda
görev
alan
ve
m
Enterprise JavaBean (EJB) bilesenleri, J2EE uygulama modelinin çok katmanli hareket
yönetimi
(transaction
management), güvenlik (security), kaynak yönetimi (resource management), verinin
i.c o
kalicigili (persistence) gibi önemli servisleri saglayan bilesenlerdir. Ancak bu bilesenlerin gelistirilmesi, siradan JavaBeanlerin yazilmasindan biraz daha farklidir. Basit bir “HelloWorld” EJB bileseni için bile asagidaki kodlarin yazilmasi gerekmektedir: Enterprise Bean
??
Remote Interface / Local Interface
??
Home Interface / LocalHome Interface
??
Deployment Descriptor
??
Vendor-specific descriptor
dil
??
va
Görüldügü gibi, birçok kitabin en basit örnek olarak ilk önce anlattigi “HelloWorld” örnegi için bile en az 5 adet kütügün hazirlanmasi ve birlikte yönetilmesi gerekmektedir. Yani Enterprise Bean sinifinda yapilacak küçük bir degisiklik için ilgili arayüz sinif(lar)inin ve XML tabanli deployment descriptor ve/veya vendor-specific
ww w. ja
decriptor kütüklerinin güncellenmesi gerekir. Uygulama gelistirme asamalarinda ise bu tür degisikliklerin gerçeklesmesi kaçinilmazdir. Ayrica çogu durumda, gelistirilen bir EJB için daha fazla kütügün olacagi düsünüldügünde, EJB gelistiricilerin bu konuda fazla emek ve zaman harcamamak amaciyla birseyler yapmasinin gerekliligi açikça görülmektedir.
XDoclet, bir kod üretme aracidir. Java kaynak kütüklerine eklenecek üstveriyi (metadata) ayristirarak, yeni Java kaynak kütükleri ya da XML descriptor kütüklerini olusturabilmektedir. Bu üstveri ise, JavaDoc imleri arasina yerlestirilmektedir. Dolayisiyla EJB gelistiriciler, basit bir fikirden yola çikarak kodlarinin %85 gibi önemli bir kisminin yazilmasini otomatiklestirmektedirler: kod içi belgeleme. Kisaca, EJB bileseni gelistiren bir programci, JavaDoc imlerini kullanarak kod içi belgelemesini yaparken, özel XDoclet imlerini de kullanarak, EJB bileseninin baska kütüklerinin olusturulmasini saglayabilmektedir.
3
Bu yaklasimin bazi yararlari bulunmaktadir: EJB gelistirici, gelistirmekte oldugu bileseni olusturan en az 5 ya da daha fazla
m
1.
kütükle ilgilenmek yerine, is mantigini içeren Enterprise Bean sinifi üzerine yogunlasabilir ve tek bir kütügü yönetmek durumundadir.
Kod gelistirme zamani önemli miktarda azalmaktadir. XDoclet kodun %85’ini
i.c o
2.
üretmektedir. Arayüzler (interface), veri tasima nesneleri (data transfer objects – value objects), Struts formlari ya da birçok örüntü (pattern) için gerekli olan kütükler, XDoclet tarafindan üretilmektedir. 3.
XDoclet, birçok lider uygulama sunucusu ve araci desteklemektedir. JBoss,
BEA Web Logic, IBM Websphere, Oracle IAS, Orion, Borland, MacroMedia JRun,
dil
Jonas, Pramati, Sybase EAServer ve birçok baska uygulama sunucusu ile; Castor, Hibernate, birkaç JDO saglayici, Struts, WebWork, MobObjects ve baska birçok araç, XDoclet tarafindan desteklenmektedir. 4.
XDoclet
açik
kaynak
kod
ilkesi
ile
gelistirilmis
oldugundan
yazilim
va
saglayicilarin özel çözümlerine bagimli kalinmayacagi gibi, genisletilebilir yapisi sayesinde, uygulama gelistiricilerin kendi XDoclet modüllerini yazmalarina da olanak
ww w. ja
saglamaktadir.
4
3. Apache Ant (Another Neat Tool) – http://ant.apache.org/
m
Büyük bir J2EE projesinde çalisan bir uygulama gelistiricinin ilgilenmesi gereken birçok .java kaynak kütügü bulunmaktadir. Bu kütüklerin çogu baska kilavuzlar altinda bulunan baska kaynak kütüklere dayanmakta (dependency) ve projenin
i.c o
olusturulmasi için bütün bu bagimliliklarin ele alinmasi, kaynak kütüklerin derlenmesi, kilavuzlarin yönetilmesi.. gerekmektedir. Bir araç kullanilmamasi durumunda bu isler gerçekten zaman alici ve sinir bozucu olabilmektedir.
Apache Ant, teorik olarak Make aracina benzeyen ancak Java tabanli bir olusturma aracidir (Java-based build tool). Make, gnumake, nmake, jam gibi birçok benzer araci varken Ant’in gelistirilmesinin nedeni olarak, ilk gelistiricisinin farkli düzlemler için
dil
yazilim gelistirirken, var olan araçlarin kisitlamalari ile basa çikamamis olmasi gösterilmektedir. Make benzeri araçlar kabuk tabanlidir (shell-based). Dolayisiyla, üzerinde çalistiliklari isletim sistemine de bagimlidirlar. Ayrica kullanimlari da genellikle oldukça zordur.
va
Ant ise, kabuk tabanli komutlar ile genisletilmis bir model yerine, Java siniflari ile genisletilmis bir model sunar. Kabuk komutlari yerine XML tabanli biçimlendirme kütükleri kullanmaktadir. Dolayisiyla platformdan bagimsiz ve kolay kullanimli bir yapisi vardir. tekrarli
karmasik
islemlerin
otomatiklestirilmesini
sagladigindan,
ww w. ja
Ant,
standartlastirilmis olusturma islemlerinde oldukça yararlidir. J2EE projelerinin farkli kilavuzlara dagilmis çok kütüklü yapisi göz önüne alindiginda, Ant gibi bir aracin saglayacagi yarar ortadadir.
Ant bugün birçok tümlesik program gelistirme ortaminda kullanilmakta, bu ortamlarla tümlesik çalisabilmektedir.
5
4. JUnit – http://www.junit.org
çalistirilmasi
ve
sonuçlarin
beklenildigi
gibi
olusup
m
“Birim sinamasi (unit test)”, üretilen kodun gelistirilen sistemden yalitilmis bir sekilde olusmadiginin
sinanmasi
anlamina gelmektedir. Amaç, gelistirilen kodun sistemle bütünlestirilmeden önce,
i.c o
kodda bulunmasi olasi hatalarin belirlenmesidir. Hatalarin önceden belirlenmeye çalisilmasinin nedeni ise, yalitim sayesinde hatalarin daha kolay (daha çabuk ve daha ucuz) bulunabilmesidir. Sinamalar sayesinde, kodlarda yapilan degisikliklerin, daha önceden yapilanlara zarar verip vermedigi de belirlenebilir.
JUnit, Java kodlari için Java dilinde birim sinamalarinin hazirlanabilecegi, açik kaynak kod felsefesine göre gelistirilmis bir çatidir (framework). Bir sinamayi üzere
gerekli
olan
çalisma
ortamini
saglar.
Sinama
islemlerinin
dil
çalistirmak
otomatiklestirilmesi ve sinama sonuçlarinin hatalari belirleyebilmek üzere uygun biçimde düzenlenmesi gibi islevsellikler sunar. Böylece, sinama isini yapan kisinin
ww w. ja
va
sinamalarla ilgili olarak yapmasi gereken is, sadece sinama kodlarini yazmaktir.
6
5. Apache Struts – http://jakarta.apache.org/struts/ uygulamalarinin, dogrudan J2EE düzlemi tarafindan belirtilmeyen,
m
Bütün Web
istemlerin yollanmasi, yöntemlerin çagrilmasi, sunulacak görüntülerin seçilmesi ve olusturulmasi gibi bir takim ortak gereksinimleri bulunmaktadir. Bir Web-katmani Çatisi
(Web-tier
Application
Framework),
J2EE
düzlemi
üzerine
i.c o
Uygulama
yerlestirilerek bu ortak gereksinimleri karsilayabilir. Bu yaklasim, Sekil 5.1’de görülmektedir. Uygulamaya özel kod
Uygulama Katmanlari
dil
Uygulama çatisi (Application Framework) J2EE (Web Container)
Düzlem Katmanlari
J2SE
va
Isletim Sistemi
Sekil 5.1 J2EE Uygulamalarinin Katmanli Yapisi
ww w. ja
Bir Web-katmani Uygulama Çatisinin yarari, Web-katmani teknolojilerinin kullanimini kolaylastirarak, uygulama gelistiricilerinin is mantigina yogunlasmasini saglamasidir. J2EE BluePrints (http://java.sun.com/blueprints/enterprise/) tarafindan önerilen en iyi deneyimlerden (best practice) birisi, J2EE uygulamalari için yeni bir çati katmani gelistirmek
yerine,
var
olan
ve
kalitesini
ispatlamis
bir
uygulama
çatisinin
kullanilmasidir.
Apache Struts bu uygulama çatilarindan birisidir. Ücretsiz ve açik kaynak kodlu olan çati, oldukça biçimlendirilebilir olmasinin yanisira, genis (ve genislemekte olan) özellikler
geçerlilik
listesi
sunmaktadir.
kontrolü
yapan
Bunlar
HTML
arasinda
sunucu
formlarinin
ve
tarafi JavaBeanlerinin, bazi
uluslararasilastirma
(internationalization) desteginin otomatik üretilmesi; HTML olusturulmasi, sunum mantiginin isletilmesi ve sablonlar (template) için özel imler (tag) içerilmesi sayilabilir. Ancak Apache Struts henüz bir standart haline gelmemistir. Diger Web-katmani
7
uygulama çatilari olarak, J2EE BluePrints WAF, JavaServer Faces ve Sun ONE
ww w. ja
va
dil
i.c o
m
Application Framework sayilabilir.
8
6. JBoss – http://www.jboss.org uygulamalari,
bir
(ya
da
daha
fazla)
uygulama
sunucusu
üzerinde
m
J2EE
çalismaktadirlar. Uygulama sunuculari, farkli kuruluslar tarafindan Sun firmasinin hazirladigi belirtimlere (specification) uygun olarak gelistirilmis, dolayisiyla J2EE
islevler
alt
kümesini
gerçeklestirilecegi
i.c o
uygulamalarinin düzlemden bagimsiz olmalarini saglamak üzere belirli bir ortak saglamaktadirlar.
özellestirilmeyen
Bununla
konularda,
her
birlikte,
uygulama
belirtimlerde
nasil
sunucusu
kendi
çözümlerini üretmekte, böylece farkli basarimlarda uygulama sunuculari ortaya çikmaktadir. JBoss, BEA Web Logic, IBM Websphere, Oracle IAS, Orion, Borland, MacroMedia JRun, Jonas, Pramati, Sybase EAServer bu uygulama sunucularindan
Bir
J2EE
uygulamasinin
dil
bazilaridir.
yayginlastirilmasi
(deployment)
asamasinda
hangi
uygulama sunucusunun seçilecegi, uygulamayi kullanacak olan kurumun var olan yatirimlarina ve alacagi kararlara baglidir. Kendi kullanimi için uygulama gelistiren bir kurum ise ayni noktalari dikkate almakla birlikte, en iyi basarimi saglamak üzere
kurumlara
va
belirli uygulama sunucusuna bagli kalmak gibi bir karara da varabilir. Ancak farkli pazarlanmasi
düsünülen
bir
uygulamanin,
kesinlikle
uygulama
sunucusundan bagimsiz olmasi gerekmektedir. Dolayisiyla gelistirme asamasinda, uygulamanin birden fazla uygulama sunucusu üzerinde çalistirilarak denenmesi bir
ww w. ja
seçenek olarak degerlendirilebilir.
JBoss, tamami Java dili ile gelistirilmis, açik kaynak kodlu ve ücretsiz, 2002 yilinda “JavaWorld’s Editor’s Choice – best java app-server” ödülünü kazanmis, Motorola, Dow Jones Indexes, Nortel, Playboy Enterprises, U.S. Department of Defense, WorldCom gibi önemli isimlerin de içinde bulundugu bir müsteri yelpazesi olan popüler bir Java uygulama sunucusudur.
Uygulamanin hayata geçirilmesinde degerlendirilebilecek bir seçenek olmanin yanisira, gelistirme sirasinda gelistiricilerin kisisel bilgisayarlarina bile kurulup kullanilabilecek oldukça kolay bir uygulama sunucusu olan JBoss, seçilecek baska bir
uygulama
sunucusu
ile
birlikte
uygulamanin
düzlemden
bagimsizliginin
dogrulanmasi için de tercih edilebilir.
9
7. Eclipse – http://www.eclipse.org
m
Eclipse, Web siteleri, gömülü (embedded) Java programlari, C++ programlari ve EJB bilesenleri gibi uygulamalar gelistirmek üzere tümlesik program gelistirme ortami (Integrated Development Environment - IDE) olusturmak için tasarlanmis bir
i.c o
düzlemdir. Daha genel bir ifade ile Eclipse Platform’u, hersey için kullanilabilen ama hiçbirseye özel olmayan bir IDE olarak görülebilir.
Eclipse, varolan islevlerinin yanisira, plug-inler ile bütünlestirilerek yeni islevler de saglayabilmekte, gereksinimlere göre özellestirilebilmektedir. Windows ve Linux da dahil olmak üzere farkli isletim sistemlerinde çalisabilmektedir. HTML, Java, C, JSP, EJB, XML gibi içerik türlerini desteklemektedir.
dil
Bir IDE seçilirken dikkat edilmesi gereken önemli özelliklerden birisi, seçilen gelistirme ortaminin kullanilacak uygulama sunucusu ile bütünlestirilebilir olmasidir. Böylece
uygulamanin
kodlama
(coding),
böcek
ayiklama
(debugging)
ve
konuslandirma (deploying) asamalarinda, IDE önemli yararlar saglayabilir. Eclipse noktada
tümlestirilebilir
yapisiyla
önem
kazanmaktadir.
Örnegin,
yukarida
va
bu
anlatilan Ant, XDoclet, JUnit, Struts gibi araçlar ile JBoss uygulama sunucusu
ww w. ja
Eclipse ile bütünlestirilerek çalistirilabilmektedir.
10
8. Kilavuz Yapisi ve Araçlarin Kurulmasi
m
Bu bölümde, yukarida bahsedilen araçlardan Ant, XDoclet, JBoss ile j2sdk’nin J2EE uygulamalari gelistirmek üzere nasil bir arada kullanilacagi örneklenecektir. Bu amaç için belirlenen bir kilavuz yapisinda araçlarin kurulumlari anlatilacak, daha sonra da
i.c o
örnek uygulamalar ile konu pekistirilecektir.
Araçlarin kurulumlari ile ilgili ayrintili bilgi, her araç için ilgili Web sitesinde ya da aracin kurulum kütükleri arasinda bulunabilir.
Bütün kurulumlar ve örnekler, üzerinde Win2000 Professional Edition isletim sistemi bulunan bir bilgisayarda yapilmis ve denenmistir.
dil
Kilavuz Yapisi
Bu belgede anlatilan araçlar, J2EE uygulamalari gelistirmek üzere kullanilabilecek birçok
araç
arasindan
çesitli
sebeplerle
seçilmis
bir
araçlar
alt
kümesini
olusturmaktadir. Burada belirlenen kilavuz yapisi da bu alt kümeyi bir araya toplamak amaciyla olusturulmus bir yapi olup tamamen programcinin tercihine baglidir. Ancak
va
bütün örnekler, buradaki yapi esas alinarak alinarak anlatilacagindan, yapinin iyi anlasilmasi ve gerekli oldugu durumlarda, degisikliklerin programci tarafindan yapilabilmesi gerekmektedir.
ww w. ja
Sekil 8.1’de, kurulumlarin yapildigi kilavuz yapisi görülmektedir.
Sekil 8.1 Kilavuz Yapisi
Sekil 8.1’deki yapi, programcinin istedigi bir yerde olusturulabilir. Ancak bazi çevre degiskenleri bu bilgiye göre kurulacaktir. Örnegin J2EEApps adli kilavuzun C: kök
11
kilavuzunda olusturuldugunu varsayarsak, çevre degiskenlerimizi Çizelge 8.1’deki
m
gibi kurabiliriz. Degeri
J2EEAPPS
C:\J2EEApps
ANT_HOME
%J2EEApps%\ant
JAVA_HOME
%J2EEApps%\j2sdk
JBOSS_HOME
%J2EEApps%\jboss
XDOCLET_HOME
%J2EEApps%\xdoclet
i.c o
Çevre Degiskeni
%PATH%;%JAVA_HOME%\bin;
PATH
dil
%ANT_HOME%\bin %CLASSPATH%;.
CLASSPATH
Çizelge 8.1. Çevre degiskenleri ve degerleri
va
Dikkat edilirse, araçlarla ilgili çevre degiskenleri J2EEApps degiskenine bagli olarak kurulmustur. Böylece bu kilavuz oldugu gibi tasinabilir hale gelmektedir. Sadece kilavuzu
gösteren
J2EEApps
degiskeninin
güncellenmesi,
araçlarin
ve
uygulamalarin çalismasi için yeterli olacaktir.
ww w. ja
Araçlarin Kurulmasi
Ilgili kilavuz yapisi olusturulduktan ve çevre degiskenleri kurulduktan sonra, herbir araç ilgili alt kilavuza kurulur. Bütün araçlar .zip
kütügü halinde ilgili web
sitelerinden indirilebilmektedir. Kurulum için yapilmasi gereken, .zip kütüklerinin kilavuzlar altina açilmasindan ibarettir. Ancak suna dikkat edilmelidir: Araçlar genellikle sürüm numaralariyla adlandirilmis kilavuzlar altinda, kilavuz bilgisi ile birlikte sikistirilmistir. Dolayisiyla, örnegin ant araci, apache-ant-1.5.4bin.zip gibi bir kütük halinde indirilebilmekte ve bu kütük açildiginda apache-ant-1.5.4 adinda bir kilavuz olusmaktadir. Oysa bizim kilavuz yapimizda sadece ant
adinda bir alt kilavuz bulunmaktadir. Yapilmasi
gereken, açilan kilavuzun adinin degistirilmesi ya da içeriginin ant alt kilavuzu altina kopyalanmasidir.
12
Burada akla söyle bir soru gelebilir: Kilavuz yapisini, ant yerine apache-ant-
m
1.5.4 adli bir alt kilavuz olusturacak sekilde de olusturamaz miyiz? Bu sorunun yaniti, ant kurulum belgelerinde verilmektedir: “Windows
95,
Windows 98 & Windows ME Note: On these systems, the script used to launch Ant will have problems if ANT_HOME is a long
i.c o
filename (i.e. a filename which is not of the format known as "8.3"). This is due to limitations in the OS's handling of the "for"
batch-file statement. It is recommended, therefore, that
Ant be installed in a short, 8.3 path, such as C:\Ant.” Ayrica, kullanilan araçlar sürekli yenilenmekte, yeni sürümleri çikmaktadir. Buna bagli olarak, kilavuz adlarinin sürüm numarasi içerecek sekilde seçilmesi, her sürüm
dil
için degisiklik yapilmasini gerektirecektir.
Kurulumlar tamamlandiktan sonra, araçlarin çalisip çalismadigini denemek üzere bir
ww w. ja
va
sonraki bölümde verilen örnek uygulamalar kullanilabilir.
13
9. Applications Alt Kilavuzunun Yapisi alt
kilavuzu,
gelistirilen
uygulamalari
bir
arada
tutmak
üzere
m
Applications
olusturulmustur. Sekil 9.1’de iki örnek uygulama içermekte olan Applications kilavuzu
dil
i.c o
görülmektedir.
Sekil 9.1 Applications kilavuzunun görünümü
Sekil 9.1’de görülen Count, ExampleForAll ve HW, örnek uygulamalar için olusturulmus olan alt kilavuzlardir. Diger iki kütük ise bütün uygulamalarda ortak
va
olarak kullanilan bir takim bilgileri içermektedir.
Uygulamalar için olusturulan alt kilavuzlar ise kendi içlerinde belirli bir yapida tutulmaktadir.
9.2’de
ExampleForAll
uygulamasinin
kilavuz
yapisi
ww w. ja
görülmektedir.
Sekil
Sekil 9.2. ExampleForAll uygulamasi için kilavuz yapisi
14
Görüldügü gibi, her uygulama için bir alt kilavuz olusturulmakta, o uygulama ile ilgili
src altinda, uygulamanin kaynak kodu bulunmaktadir.
m
bütün kütükler de bu alt kilavuz altinda tutulmaktadir.
src\java kilavuzu, kaynak java kütüklerini içermektedir. Bu kilavuz altinda,
i.c o
olusturulan herbir package için ayri bir alt kilavuz bulunabilir. Her package içerisinde ise, uygulamayi olusturan farkli bilesenler görülmektedir.
?? client: istemci uygulama kaynak kod kütüklerini
?? ejb: Enterprise JavaBean kaynak kod kütüklerini
?? web: Java ile kodlanmis ve derlenecek olan web bilesenlerini
dil
(Servlet gibi) içermektedir.
src\web altinda ise, derlenmesi gerekmeyen web bilesenlerine ait kaynak kodlar bulunmaktadir. Örnegin, .html, .jsp, .css, .js kütükleri bu kilavuz altinda
va
yer almaktadir. Bu kilavuz altinda, gerekliyse alt kilavuzlar olusturulabilir. Örnegin Styles adinda bir alt kilavuz olusturularak, uygulamada kullanilacak farkli .css kütükleri bu kilavuz altinda toplanabilir ya da bütün JavaScript
kodlari
JavaScripts adinda bir alt kilavuza yerlestirilebilir. kodu
yazildiktan
sonra,
kodlarin
ww w. ja
Uygulama
derlenmesi,
yardimci
kütüklerin
olusturulmasi gibi islemler gerçeklestirilecektir. Bu amaç için ise daha önce bahsedilmis olan Ant, XDoclet gibi araçlar kullanilacaktir. Sekil 9.3’te, biçimlendirme kütüklerinde
belirtilen
bilgilere
göre
olusturulan
yeni
kilavuzlarla
birlikte
ExampleForAll kilavuzunun yapisi görülmektedir. build altinda: olusturulan yeni kütüklerle birlikte, uygulamanin derlenmis hali (compile/build),
deploy altinda: uygulama sunucusuna kopyalanacak kütükler (deployment) gen-src altinda ise: üretilen kaynak kod kütükleri bulunmaktadir. Uygulama gelistirilirken böyle farkli alt kilavuzlara dagitilmis kütükler üzerinde çalismak,
tekrarlanan
derleme/olusturma/yayginlastirma
(compile/build/deploy)
islemlerinin daha kolay otomatiklestirilebilen ve kendini anlatan, kolay anlasilir bir
15
yapi olusturulmasini saglamaktadir. Programci, kendi tercihine göre farkli yapilar
m
olusturmakta ve kullanmakta özgürdür. Ancak bu belgede anlatilan örnekler, sözü geçen yapiya sadik kalinarak hazirlanmistir. Programcinin, olusturacagi yapiya
ww w. ja
va
dil
i.c o
uygun degisiklikleri yapmasi gerekmektedir.
Sekil 9.3. ExampleForAll kilavuzunun, olusturma asamasindan sonraki görünümü
16
10. build.properties kütügü
src.java.dir = ${src.dir}/java src.web.dir = ${src.dir}/web src.lib.dir = ${src.dir}/lib
i.c o
build.dir = ${app.dir}/build deploy.dir = ${app.dir}/deploy gen-src.dir = ${app.dir}/gen-src src.dir = ${app.dir}/src
m
xdoclet.lib.dir = ${env.XDOCLET_HOME}/lib jboss.client.dir = ${env.JBOSS_HOME}/client jboss.deploy.path = ${env.JBOSS_HOME}/server/default/deploy
xdoclet.force = false
dil
build.ejb.dir = ${build.dir}/ejb build.ejb.meta-inf.dir = ${build.ejb.dir}/META-INF build.web.dir = ${build.dir}/web build.web.web-inf.dir = ${build.web.dir}/WEB-INF build.web.web-inf.classes.dir = ${build.web.web-inf.dir}/classes build.web.web-inf.lib.dir = ${build.web.web-inf.dir}/lib
va
Kaynak Kod 10.1. build.properties kütügü
build.properties kütügü, bütün uygulamalarda kullanilan ortak ayarlari içeren bir kütüktür. Incelendiginde görülecektir ki; özellikle, bahsedilen kilavuz yapilarini olusturmak üzere tanimlanmis degiskenleri içermektedir. Programci, istegine uygun
ww w. ja
sekilde bu kütükte degisiklikler yapabilir. Kütügün yapisinin daha iyi anlasilabilmesi için Ant belgelerine basvurulabilir.
17
11. HelloWorld Uygulamasi
m
Bu uygulama, bir Stateless Session Bean (SSB) ile bir istemci uygulamadan olusan basit bir uygulamadir. Istemci uygulama, SSB üzerindeki bir yöntemi çagirarak dönen degeri ekrana yazdirmakta, SSB ise çalisan her yöntemi için sunucu tarafindaki çikti
üretmektedir.
Uygulamanin
kaynak
kütükleri,
i.c o
konsola
http://ata.cs.hun.edu.tr/~aslantur/Courses/Bil447/index.htm adresinden indirilebilir. Örnek oldukça basit oldugundan, bu kesimde SSB bileseni açiklanmayacaktir. Ancak vurgulanmasi gereken nokta, istemci uygulamanin sunucu üzerindeki SSB’ye nasil ulastigidir.
Bu
noktayi
örnekleyen
iki
farkli
istemci
uygulama
yazilmistir.
HelloClient istemci uygulamasi, kod içerisine yazilan sunucuya ait bir takim
çevre
degiskeninde
bulunan
dil
parametrelerle çalisirken, HelloClient2 uygulamasi bu parametreleri classpath jndi.properties
adli
kütükten
almaktadir.
Dolayisiyla HelloClient2
istemci uygulamasi, farkli jndi.properties
kütükleri
uygulama
kullanarak
sunuculari
üzerine
yerlestirilmis
va
bilesenlere ulasabilir.
farkli
Kaynak Kod 11.1’de jndi.properties kütügü görülmektedir.
ww w. ja
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099
Kaynak Kod 11.1. jndi.properties kütügü
Kaynak Kod 11.2 ve 11.3’de ise HelloClient ve HelloClient2 istemcilerini çalistiran .bat kütükleri görülmektedir. @echo off
cd build\ejb
java -classpath %CLASSPATH%;%JBOSS_HOME%\client\jbossall-client.jar HelloWorldExample.client.HelloClient2 cd ..\.. @echo on
Kaynak Kod 11.2. runClient.bat kütügü
18
@echo off
m
cd build\ejb java -classpath %CLASSPATH%;%JBOSS_HOME%\client\jbossallclient.jar;%J2EEApps\Applications HelloWorldExample.client.HelloClient2 cd ..\..
i.c o
@echo on
Kaynak Kod 11.3. runClient2.bat kütügü
Kodlar incelendigi zaman, uygulama çalistirilirken -classpath
parametresinin
jndi.properties kütügünü içerecek sekilde nasil kuruldugu görülecektir. Uygulamanin çalistirilmasi için asagidaki adimlar izlenebilir: uygulama
sunucusu
seçmistik; çalistirmak için; ?? Bir konsol açiniz
çalistirilir.
Uygulama
sunucusu
dil
1. Önce
olarak jboss
?? run
va
?? cd J2EEApps\jboss\bin
Uygulama sunucusunun çalisip çalismadigini görmek için, bir tarayici ile http://localhost:8080/jmx-console adresine bakabilirsiniz.
ww w. ja
2. Uygulamanin derle/olustur/yayginlastir (compile/build/deploy) asamalari ayri ayri gerçeklestirilebilecegi gibi, Ant aracina girdi olan build.xml kütügünde örneklendigi üzere, tanimlanacak görevlerle hep beraber de gerçeklestirilebilir. ?? Bir konsol açiniz
?? cd J2EEApps\Applications\HW ?? ant deploy-ejb
3. Bir önceki adimda herhangi bir hata olusmadiysa, bilesen(ler)inizin uygulama sunucusunun ilgili bir kilavuzuna kopyalanarak kullanima hazir hale geldigini görebilirsiniz. Bu durumda yapmaniz gereken istemci uygulamalari çalistirarak sonucu görmektir. Bu amaç için olusturulmus olan runClient.bat ve runClient2.bat kütüklerini kullanabilirsiniz. ?? runClient.bat
19
ww w. ja
va
dil
i.c o
m
?? runClient2.bat
20
12. KAYNAKLAR Designing Enterprise Applications with the J2EE Platform, Second Edition,
m
1.
http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/
XDoclet web sitesi, http://xdoclet.sourceforge.net/
3.
Apache Ant web sitesi, http://ant.apache.org
4.
JUnit web sitesi, http://www.junit.org
5.
Apache Struts web sitesi, http://jakarta.apache.org/struts/
6.
JBoss web sitesi, http://www.jboss.org
7.
Eclipse web sitesi, http://www.eclipse.org
8.
Introducing JUnit by Alan Griffiths
dil
i.c o
2.
http://www.octopull.demon.co.uk/java/Introducing_JUnit.html
9.
Ant Tutorial, Ashley J.S Mills,
/ant.html
10.
va
http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/ant
Eclipse Platform Technical Overview, Object Technology International, Inc., February 2003, http://www.eclipse.org/whitepapers/eclipse-overview.pdf Mastering Enterprise JavaBeans, Second Edition, Ed Roman, ISBN: 0-471-
ww w. ja
11.
41711-4
12.
EJB Design Patterns, Advanced Patterns, Processes, and Idioms, Floyd Marinescu, ISBN: 0-471-20831-0
21