Professional Documents
Culture Documents
J2EE Araclar Kurulum OASLANTURK WwwJavaDiliCom
J2EE Araclar Kurulum OASLANTURK WwwJavaDiliCom
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.
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.
1
1. IÇINDEKILER
1. IÇINDEKILER...................................................................................................................2
m
2. XDoclet – http://xdoclet.sourceforge.net/ ............................................................3
o
4. JUnit – http://www.junit.org .......................................................................................6
i.c
6. JBoss – http://www.jboss.org...................................................................................9
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
??
??
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
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:
m
kütükle ilgilenmek yerine, is mantigini içeren Enterprise Bean sinifi üzerine
yogunlasabilir ve tek bir kütügü yönetmek durumundadir.
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.
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.
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
Apache Struts bu uygulama çatilarindan birisidir. Ücretsiz ve açik kaynak kodlu olan
ww
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.
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.
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.
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
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
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’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
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
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.”
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ü
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.
o
ise, uygulamayi olusturan farkli bilesenler görülmektedir.
i.c
?? ejb: Enterprise JavaBean kaynak kod kütüklerini
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.
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
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
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.
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
cd build\ejb
ww
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.
?? cd J2EEApps\Applications\HW
?? ant deploy-ejb
ww
?? 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/
o
4. JUnit web sitesi, http://www.junit.org
i.c
5. Apache Struts web sitesi, http://jakarta.apache.org/struts/
9.
dil
http://www.octopull.demon.co.uk/java/Introducing_JUnit.html
http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/ant
va
/ant.html
41711-4
12. EJB Design Patterns, Advanced Patterns, Processes, and Idioms, Floyd
Marinescu, ISBN: 0-471-20831-0
w.
ww
21