Download as pdf
Download as pdf
You are on page 1of 21

J2EE Uygulamalarinin Gelistirilmesinde Kullanilabilecek Bazi

Araçlar ve Örnek Bir Örnek Uygulama

m
Oguz Aslantürk - aslantur@hacettepe.edu.tr

14/09/2003

o
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

i.c
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
da ekleme sonucunda bu adimlarin tekrarlanmasi gerekmektedir. Bütün bu islemlerin

dil
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.

Ayrica uygulamanin gelistirilmesi sirasinda bir de uygulama sunucusu gerekmektedir.


va
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
söylenebilir.
ja

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
w.

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.
ww

Dolayisiyla bu belgenin bir basvuru olarak görülmesindense, bazi araçlari kisaca


tanitan bir belge olarak degerlendirilmesi daha uygundur.

1
1. IÇINDEKILER
1. IÇINDEKILER...................................................................................................................2

m
2. XDoclet – http://xdoclet.sourceforge.net/ ............................................................3

3. Apache Ant (Another Neat Tool) – http://ant.apache.org/...................................5

o
4. JUnit – http://www.junit.org .......................................................................................6

5. Apache Struts – http://jakarta.apache.org/struts/ ..............................................7

i.c
6. JBoss – http://www.jboss.org...................................................................................9

7. Eclipse – http://www.eclipse.org ...........................................................................10

8. Kilavuz Yapisi ve Araçlarin Kurulmasi.......................................................................11


dil
Kilavuz Yapisi...................................................................................................................... 11

Araçlarin Kurulmasi ............................................................................................................. 12

9. Applications Alt Kilavuzunun Yapisi ...........................................................................14


va
10. build.properties kütügü..............................................................................................17

11. HelloWorld Uygulamasi ............................................................................................18

12. KAYNAKLAR..............................................................................................................21
ja
w.
ww

2
2. XDoclet – http://xdoclet.sourceforge.net/
Enterprise JavaBean (EJB) bilesenleri, J2EE uygulama modelinin çok katmanli

m
mimarisinde is katmaninda görev alan ve hareket yönetimi (transaction
management), güvenlik (security), kaynak yönetimi (resource management), verinin
kalicigili (persistence) gibi önemli servisleri saglayan bilesenlerdir. Ancak bu

o
bilesenlerin gelistirilmesi, siradan JavaBeanlerin yazilmasindan biraz daha farklidir.
Basit bir “HelloWorld” EJB bileseni için bile asagidaki kodlarin yazilmasi

i.c
gerekmektedir:

?? Enterprise Bean

?? Remote Interface / Local Interface

?? Home Interface / LocalHome Interface

??

??
Deployment Descriptor

Vendor-specific descriptor
dil
Görüldügü gibi, birçok kitabin en basit örnek olarak ilk önce anlattigi “HelloWorld”
va
ö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
decriptor kütüklerinin güncellenmesi gerekir. Uygulama gelistirme asamalarinda ise
ja

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
w.

açikça görülmektedir.

XDoclet, bir kod üretme aracidir. Java kaynak kütüklerine eklenecek üstveriyi (meta-
data) ayristirarak, yeni Java kaynak kütükleri ya da XML descriptor kütüklerini
olusturabilmektedir. Bu üstveri ise, JavaDoc imleri arasina yerlestirilmektedir.
ww

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:

1. EJB gelistirici, gelistirmekte oldugu bileseni olusturan en az 5 ya da daha fazla

m
kütükle ilgilenmek yerine, is mantigini içeren Enterprise Bean sinifi üzerine
yogunlasabilir ve tek bir kütügü yönetmek durumundadir.

2. Kod gelistirme zamani önemli miktarda azalmaktadir. XDoclet kodun %85’ini

o
ü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,

i.c
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,
Jonas, Pramati, Sybase EAServer ve birçok baska uygulama sunucusu ile; Castor,

4. XDoclet açik kaynak


dil
Hibernate, birkaç JDO saglayici, Struts, WebWork, MobObjects ve baska birçok araç,
XDoclet tarafindan desteklenmektedir.

kod ilkesi ile gelistirilmis oldugundan yazilim


saglayicilarin özel çözümlerine bagimli kalinmayacagi gibi, genisletilebilir yapisi
va
sayesinde, uygulama gelistiricilerin kendi XDoclet modüllerini yazmalarina da olanak
saglamaktadir.
ja
w.
ww

4
3. Apache Ant (Another Neat Tool) – http://ant.apache.org/
Büyük bir J2EE projesinde çalisan bir uygulama gelistiricinin ilgilenmesi gereken

m
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
olusturulmasi için bütün bu bagimliliklarin ele alinmasi, kaynak kütüklerin derlenmesi,

o
kilavuzlarin yönetilmesi.. gerekmektedir. Bir araç kullanilmamasi durumunda bu isler
gerçekten zaman alici ve sinir bozucu olabilmektedir.

i.c
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
yazilim gelistirirken, var olan araçlarin kisitlamalari ile basa çikamamis olmasi

dil
gösterilmektedir. Make benzeri araçlar kabuk tabanlidir (shell-based). Dolayisiyla,
üzerinde çalistiliklari isletim sistemine de bagimlidirlar. Ayrica kullanimlari da
genellikle oldukça zordur.

Ant ise, kabuk tabanli komutlar ile genisletilmis bir model yerine, Java siniflari ile
va
genisletilmis bir model sunar. Kabuk komutlari yerine XML tabanli biçimlendirme
kütükleri kullanmaktadir. Dolayisiyla platformdan bagimsiz ve kolay kullanimli bir
yapisi vardir.

Ant, tekrarli karmasik islemlerin otomatiklestirilmesini sagladigindan,


ja

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.
w.

Ant bugün birçok tümlesik program gelistirme ortaminda kullanilmakta, bu ortamlarla


tümlesik çalisabilmektedir.
ww

5
4. JUnit – http://www.junit.org
“Birim sinamasi (unit test)”, üretilen kodun gelistirilen sistemden yalitilmis bir sekilde

m
çalistirilmasi ve sonuçlarin beklenildigi gibi olusup olusmadiginin sinanmasi
anlamina gelmektedir. Amaç, gelistirilen kodun sistemle bütünlestirilmeden önce,
kodda bulunmasi olasi hatalarin belirlenmesidir. Hatalarin önceden belirlenmeye

o
çalisilmasinin nedeni ise, yalitim sayesinde hatalarin daha kolay (daha çabuk ve
daha ucuz) bulunabilmesidir. Sinamalar sayesinde, kodlarda yapilan degisikliklerin,

i.c
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
çalistirmak üzere gerekli olan çalisma ortamini saglar. Sinama islemlerinin

dil
otomatiklestirilmesi ve sinama sonuçlarinin hatalari belirleyebilmek üzere uygun
biçimde düzenlenmesi gibi islevsellikler sunar. Böylece, sinama isini yapan kisinin
sinamalarla ilgili olarak yapmasi gereken is, sadece sinama kodlarini yazmaktir.
ja va
w.
ww

6
5. Apache Struts – http://jakarta.apache.org/struts/
Bütün Web uygulamalarinin, dogrudan J2EE düzlemi tarafindan belirtilmeyen,

m
istemlerin yollanmasi, yöntemlerin çagrilmasi, sunulacak görüntülerin seçilmesi ve
olusturulmasi gibi bir takim ortak gereksinimleri bulunmaktadir. Bir Web-katmani
Uygulama Çatisi (Web-tier Application Framework), J2EE düzlemi üzerine

o
yerlestirilerek bu ortak gereksinimleri karsilayabilir. Bu yaklasim, Sekil 5.1’de
görülmektedir.

i.c
Uygulamaya özel kod
Uygulama
Katmanlari Uygulama çatisi
(Application Framework)

Düzlem
Katmanlari
J2SE
dil
J2EE (Web Container)

Isletim Sistemi
va
Sekil 5.1 J2EE Uygulamalarinin Katmanli Yapisi

Bir Web-katmani Uygulama Çatisinin yarari, Web-katmani teknolojilerinin kullanimini


ja

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
w.

gelistirmek yerine, var olan ve kalitesini ispatlamis bir uygulama çatisinin


kullanilmasidir.

Apache Struts bu uygulama çatilarindan birisidir. Ücretsiz ve açik kaynak kodlu olan
ww

çati, oldukça biçimlendirilebilir olmasinin yanisira, genis (ve genislemekte olan)


özellikler listesi sunmaktadir. Bunlar arasinda sunucu tarafi JavaBeanlerinin,
geçerlilik kontrolü yapan HTML formlarinin ve 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
Application Framework sayilabilir.

o m
i.c
dil
ja va
w.
ww

8
6. JBoss – http://www.jboss.org
J2EE uygulamalari, bir (ya da daha fazla) uygulama sunucusu üzerinde

m
çalismaktadirlar. Uygulama sunuculari, farkli kuruluslar tarafindan Sun firmasinin
hazirladigi belirtimlere (specification) uygun olarak gelistirilmis, dolayisiyla J2EE
uygulamalarinin düzlemden bagimsiz olmalarini saglamak üzere belirli bir ortak

o
islevler alt kümesini saglamaktadirlar. Bununla birlikte, belirtimlerde nasil
gerçeklestirilecegi özellestirilmeyen konularda, her uygulama sunucusu kendi

i.c
çö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
bazilaridir.

Bir J2EE uygulamasinin


dil
yayginlastirilmasi (deployment)
uygulama sunucusunun seçilecegi, uygulamayi kullanacak olan kurumun var olan
asamasinda

yatirimlarina ve alacagi kararlara baglidir. Kendi kullanimi için uygulama gelistiren bir
hangi

kurum ise ayni noktalari dikkate almakla birlikte, en iyi basarimi saglamak üzere
belirli uygulama sunucusuna bagli kalmak gibi bir karara da varabilir. Ancak farkli
va
kurumlara 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
seçenek olarak degerlendirilebilir.
ja

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,
w.

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


ww

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
Eclipse, Web siteleri, gömülü (embedded) Java programlari, C++ programlari ve

m
EJB bilesenleri gibi uygulamalar gelistirmek üzere tümlesik program gelistirme ortami
(Integrated Development Environment - IDE) olusturmak için tasarlanmis bir
düzlemdir. Daha genel bir ifade ile Eclipse Platform’u, hersey için kullanilabilen ama

o
hiçbirseye özel olmayan bir IDE olarak görülebilir.

Eclipse, varolan islevlerinin yanisira, plug-inler ile bütünlestirilerek yeni islevler de

i.c
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.

Bir IDE seçilirken dikkat edilmesi gereken önemli özelliklerden birisi, seçilen

Böylece uygulamanin kodlama


dil
gelistirme ortaminin kullanilacak uygulama sunucusu ile bütünlestirilebilir olmasidir.
(coding), böcek ayiklama (debugging)
konuslandirma (deploying) asamalarinda, IDE önemli yararlar saglayabilir. Eclipse
ve

bu noktada tümlestirilebilir yapisiyla önem kazanmaktadir. Örnegin, yukarida


va
anlatilan Ant, XDoclet, JUnit, Struts gibi araçlar ile JBoss uygulama sunucusu
Eclipse ile bütünlestirilerek çalistirilabilmektedir.
ja
w.
ww

10
8. Kilavuz Yapisi ve Araçlarin Kurulmasi
Bu bölümde, yukarida bahsedilen araçlardan Ant, XDoclet, JBoss ile j2sdk’nin J2EE

m
uygulamalari gelistirmek üzere nasil bir arada kullanilacagi örneklenecektir. Bu amaç
için belirlenen bir kilavuz yapisinda araçlarin kurulumlari anlatilacak, daha sonra da
örnek uygulamalar ile konu pekistirilecektir.

o
Araçlarin kurulumlari ile ilgili ayrintili bilgi, her araç için ilgili Web sitesinde ya da
aracin kurulum kütükleri arasinda bulunabilir.

i.c
Bütün kurulumlar ve örnekler, üzerinde Win2000 Professional Edition isletim sistemi
bulunan bir bilgisayarda yapilmis ve denenmistir.

Kilavuz Yapisi

araç arasindan çesitli


dil
Bu belgede anlatilan araçlar, J2EE uygulamalari gelistirmek üzere kullanilabilecek
birçok sebeplerle seçilmis bir araçlar alt
olusturmaktadir. Burada belirlenen kilavuz yapisi da bu alt kümeyi bir araya toplamak
kümesini

amaciyla olusturulmus bir yapi olup tamamen programcinin tercihine baglidir. Ancak
bütün örnekler, buradaki yapi esas alinarak alinarak anlatilacagindan, yapinin iyi
va
anlasilmasi ve gerekli oldugu durumlarda, degisikliklerin programci tarafindan
yapilabilmesi gerekmektedir.

Sekil 8.1’de, kurulumlarin yapildigi kilavuz yapisi görülmektedir.


ja
w.
ww

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
gibi kurabiliriz.

m
Çevre Degiskeni Degeri

J2EEAPPS C:\J2EEApps

ANT_HOME %J2EEApps%\ant

o
JAVA_HOME %J2EEApps%\j2sdk

i.c
JBOSS_HOME %J2EEApps%\jboss

XDOCLET_HOME %J2EEApps%\xdoclet

%PATH%;%JAVA_HOME%\bin;
PATH
%ANT_HOME%\bin

CLASSPATH dil %CLASSPATH%;.

Çizelge 8.1. Çevre degiskenleri ve degerleri

Dikkat edilirse, araçlarla ilgili çevre degiskenleri J2EEApps degiskenine bagli olarak
va
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.

Araçlarin Kurulmasi
ja

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
w.

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.4-
ww

bin.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-
1.5.4 adli bir alt kilavuz olusturacak sekilde de olusturamaz miyiz? Bu

m
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
filename (i.e. a filename which is not of the format known as

o
"8.3"). This is due to limitations in the OS's handling of the
"for" batch-file statement. It is recommended, therefore, that

i.c
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
için degisiklik yapilmasini gerektirecektir.
dil
Kurulumlar tamamlandiktan sonra, araçlarin çalisip çalismadigini denemek üzere bir
sonraki bölümde verilen örnek uygulamalar kullanilabilir.
ja va
w.
ww

13
9. Applications Alt Kilavuzunun Yapisi
Applications alt kilavuzu, gelistirilen uygulamalari bir arada tutmak üzere

m
olusturulmustur. Sekil 9.1’de iki örnek uygulama içermekte olan Applications kilavuzu
görülmektedir.

o
i.c
dil
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
olarak kullanilan bir takim bilgileri içermektedir.
va
Uygulamalar için olusturulan alt kilavuzlar ise kendi içlerinde belirli bir yapida
tutulmaktadir. Sekil 9.2’de ExampleForAll uygulamasinin kilavuz yapisi
görülmektedir.
ja
w.
ww

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
bütün kütükler de bu alt kilavuz altinda tutulmaktadir.

m
src altinda, uygulamanin kaynak kodu bulunmaktadir.

src\java kilavuzu, kaynak java kütüklerini içermektedir. Bu kilavuz altinda,


olusturulan herbir package için ayri bir alt kilavuz bulunabilir. Her package içerisinde

o
ise, uygulamayi olusturan farkli bilesenler görülmektedir.

?? client: istemci uygulama kaynak kod kütüklerini

i.c
?? ejb: Enterprise JavaBean kaynak kod kütüklerini

?? web: Java ile kodlanmis ve derlenecek olan web bilesenlerini


(Servlet gibi)

içermektedir.
dil
src\web altinda ise, derlenmesi gerekmeyen web bilesenlerine ait kaynak kodlar
bulunmaktadir. Örnegin, .html, .jsp, .css, .js kütükleri bu kilavuz altinda
yer almaktadir. Bu kilavuz altinda, gerekliyse alt kilavuzlar olusturulabilir. Örnegin
va
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.

Uygulama kodu yazildiktan sonra, kodlarin derlenmesi, yardimci kütüklerin


ja

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
w.

ExampleForAll kilavuzunun yapisi görülmektedir.

build altinda: olusturulan yeni kütüklerle birlikte, uygulamanin derlenmis hali


(compile/build),
ww

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
olusturmakta ve kullanmakta özgürdür. Ancak bu belgede anlatilan örnekler, sözü

m
geçen yapiya sadik kalinarak hazirlanmistir. Programcinin, olusturacagi yapiya
uygun degisiklikleri yapmasi gerekmektedir.

o
i.c
dil
ja va

Sekil 9.3. ExampleForAll kilavuzunun, olusturma asamasindan sonraki görünümü


w.
ww

16
10. build.properties kütügü
xdoclet.lib.dir = ${env.XDOCLET_HOME}/lib

m
jboss.client.dir = ${env.JBOSS_HOME}/client
jboss.deploy.path = ${env.JBOSS_HOME}/server/default/deploy

build.dir = ${app.dir}/build
deploy.dir = ${app.dir}/deploy

o
gen-src.dir = ${app.dir}/gen-src
src.dir = ${app.dir}/src

src.java.dir = ${src.dir}/java

i.c
src.web.dir = ${src.dir}/web
src.lib.dir = ${src.dir}/lib

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

dil
build.web.web-inf.classes.dir = ${build.web.web-inf.dir}/classes
build.web.web-inf.lib.dir = ${build.web.web-inf.dir}/lib

xdoclet.force = false

Kaynak Kod 10.1. build.properties kütügü


va
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
sekilde bu kütükte degisiklikler yapabilir. Kütügün yapisinin daha iyi anlasilabilmesi
ja

için Ant belgelerine basvurulabilir.


w.
ww

17
11. HelloWorld Uygulamasi
Bu uygulama, bir Stateless Session Bean (SSB) ile bir istemci uygulamadan olusan

m
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
konsola çikti üretmektedir. Uygulamanin kaynak kütükleri,

o
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

i.c
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
parametrelerle çalisirken, HelloClient2 uygulamasi bu parametreleri classpath
çevre degiskeninde
Dolayisiyla HelloClient2
kütükleri kullanarak
bulunan

farkli
dil
jndi.properties adli kütükten
istemci uygulamasi, farkli jndi.properties
uygulama sunuculari üzerine
almaktadir.

yerlestirilmis
bilesenlere ulasabilir.
va
Kaynak Kod 11.1’de jndi.properties kütügü görülmektedir.

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
ja

Kaynak Kod 11.1. jndi.properties kütügü


w.

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
ww

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

cd build\ejb

m
java -classpath %CLASSPATH%;%JBOSS_HOME%\client\jbossall-
client.jar;%J2EEApps\Applications HelloWorldExample.client.HelloClient2
cd ..\..
@echo on

o
Kaynak Kod 11.3. runClient2.bat kütügü

i.c
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:

1. Önce uygulama sunucusu çalistirilir. Uygulama sunucusu olarak jboss


seçmistik; çalistirmak için;

?? Bir konsol açiniz


dil
?? cd J2EEApps\jboss\bin
va
?? run

Uygulama sunucusunun çalisip çalismadigini görmek için, bir tarayici ile


http://localhost:8080/jmx-console adresine bakabilirsiniz.

2. Uygulamanin derle/olustur/yayginlastir (compile/build/deploy) asamalari ayri


ja

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


w.

?? cd J2EEApps\Applications\HW

?? ant deploy-ejb
ww

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
?? runClient2.bat

m o
i.c
dil
ja va
w.
ww

20
12. KAYNAKLAR
1. Designing Enterprise Applications with the J2EE Platform, Second Edition,

m
http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/

2. XDoclet web sitesi, http://xdoclet.sourceforge.net/

3. Apache Ant web sitesi, http://ant.apache.org

o
4. JUnit web sitesi, http://www.junit.org

i.c
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

9.
dil
http://www.octopull.demon.co.uk/java/Introducing_JUnit.html

Ant Tutorial, Ashley J.S Mills,

http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/ant
va
/ant.html

10. Eclipse Platform Technical Overview, Object Technology International, Inc.,


February 2003, http://www.eclipse.org/whitepapers/eclipse-overview.pdf

11. Mastering Enterprise JavaBeans, Second Edition, Ed Roman, ISBN: 0-471-


ja

41711-4

12. EJB Design Patterns, Advanced Patterns, Processes, and Idioms, Floyd
Marinescu, ISBN: 0-471-20831-0
w.
ww

21

You might also like