You are on page 1of 57

BAB

!embangun Web Services
Pa)a bagian ini akan )ilakukan ta(a'an 'embuatan %eb
services yang )imulai )engan membuat a'likasi kelas -ava,
membuat user interface, membuat %eb service, )an terak(ir
a)ala( membuat klien %eb service berbasis bro%ser *6arrett,
!!8,#
.#1 +embangun 3'likasi Kelas ;ava
(ada 4roye# ini a#an dib$at a4i#asi 5ava yang seder+ana yait$
HeoWord. :4i#asi ini mem4$nyai seb$a+ #eas (A5A. =et+od
greet78 a#an mengambi nama orang sebagai in4$t dan membang#it#an
$ca4an 7greeting8 yang didasar#an 4ada 2a#t$ dan b$an.
&)*)* Membuat Pro2ect 3ava
Sem$a &ie yang dib$at daam 4roye# ini a#an disim4an daam
&oder 4roye# yang ter4isa+. Cang#a+0ang#a+ daam memb$at
(ro<ect 5ava adaa+ sebagai beri#$t !
1. (ii+ 9ile & :ew !roject dari men$. WiEard .e2 (ro<ect a#an
m$nc$.
71
2. Unt$# Categories) 4ii+ ;ava
*. Unt$# !rojects) 4ii+ ;ava Application
1. 'i# :e0t6 WiEard :ew ;ava Application a#an m$nc$.
6. Unt$# !roject :ame) #eti# -reeter;ava!roject
6. Unt$# !roject ocation) #eti# C<=%y+ello:et$eans 5i#a
dire#tori tida# ada) ma#a a#an dib$at#an secara otomatis oe+
.etbeans.
7. 'i# 9inish. WiEard a#an men$t$4 dan a#an teri+at
-reeter;ava!roject ditamba+#an #e 4ane !roperties di sisi #iri.
>!O;O merupakan singkatan dari ?plain old ;ava
object6@ 7ntuk membuat project java ini server
-lass9ish harus sudah running5 dengan memilih menu
Start All !rograms atau jalankan program
startAnetbeans6bat dari direktori -lassfish terinstall5
misalnya C<=-lass9ish,S$vBCD
&)*)( Membuat Kelas 3ava
(ada bagian 4roye#) tamba+#an seb$a+ #eas 5ava yang a#an
menangani o<i#nya. Cang#a+0ang#a+ daam memb$at 'eas 5ava
adaa+ sebagai beri#$t !
76
1. 'i# #anan 4ada node -reeter;ava!roject di 4ane !rojects
dan 4ii+ :ew & ;ava Class. WiEard 2indo2 :ew ;ava Class a#an
m$nc$.
2. Unt$# Class :ame) #eti# -reeter
*. Unt$# !ackage) #eti# greeting
1. 'i# 9inish. WiEard 2indo2 a#an tert$t$4) dan #eas
-reeter6java a#an ditamba+#an #e +irar#i 4ane 4roye# dan
editor 5ava a#an terb$#a.
'eas -reeter mem4$nyai #emam4$an $nt$# mengirim $ca4an
seamat 7greeting8. -eri#$tnya adaa+ memb$at met+od t$ngga yang
dinama#an greet)*.
&)*), Menambah+an Metho/
%amba+#an de&inisi met+od 4ada +$r$& yang diteba#an daari
#eas -reeter 4ada editor 5ava. %amba+#an di bagian daam de&inisi
#eas ?reeter yang #osong.
public class Greeter {
public String greet(String name) {
return "";
}
}
?$na#an s+ortc$t Alt-Shift-9 7men$ bar Source&9ormat 8 $nt$#
re&ormat #ode. 'eas yang dib$at a#an men<adi se4erti ini!
76
Sebe$m met+od greet)* di4er$as) da4at dii+at &$ngsi yang
di<aan#an met+od ini. Dengan met+od ini a#an diambi nama orang
7se4erti 5oe8 sebagai in4$t dan a#an mem$nc$#an seb$a+ $ca4an
se4erti beri#$t !
?+ello5 ;oe6 +ave a great afternoon6 4ime goes fast6 We are already in
month E of the yearF@
Ini mer$4a#an $ca4an yang diat$r) #arena meibat#an nama
orang yang di04assing sebagai niai 4arameter in4$t yang dinamai
nama. Ini <$ga diat$r #arena greeter a#an meibat#an Igreat morning)G
Igreat a&ternoon)G or Igreat eveningG yang didasar#an 4ada 2a#t$ #ini.
5$ga) <$ma+ b$an 76 daam conto+8 secara te4at dire&e#si#an daam
4esan.
U4aya0$4aya -ooc+) >$mba$g+ dan 5acobson meng+asi#an
#e$aran U=C 0./ di b$an 5$ni 1//6 dan U=C 0./1 di b$an A#tober
1//6. Seama ta+$n 1//6) 4en$is U=C meng$ndang dan menerima
&eedbac# dari masyara#at $m$m. =ere#a menggab$ng#an $m4an
bai# ini) teta4i <eas ba+2a masi+ di4er$#an tamba+an 4er+atian.
Unt$# menyeesai#an +a ini) tamba+#an #ode di daam met+od
greet)* se+ingga ini da4at meneta4#an 2a#t$ #ini dan meneta4#an
des#r4si $nt$# bagian dari +ari!
77
'ode di #o4i dan 4aste diatas dari statemen Ireturn ?@GG !
// Get current calendar that access current date/time
Calendar myCalendar = Calendar.getInstance();
// Determine the current hour
int hour = myCalendar.get(Calendar.HOU!O"!D#$);
// Determine %art o& day 'tring
%artO&Day = null; i& (hour ( )*) +
%artO&Day = ,morning,;
} else i& (hour - ).) +
%artO&Day = ,e/ening,;
} else +
%artO&Day = ,a&ternoon,;
}
78
?$na#an s+ortc$t Alt-Shift-9 mea#$#an indent #ode secara
benar. Indent secara man$a dia#$#an dengan memberi#an tanda
comment ines yang dim$ai dengan I&&G. ?$na#an #$nci 4ab $nt$#
indent.
>Calendar merupakan kelas ;ava yang berisi tanggal
terkini dan informasi waktu6 Hetika method
get"nstance)* dipanggil5 maka akana dimunculkan
tanggal system terkini dan waktu yang disimpan dalam
objek myCalendar6 Objek jam Calendar dapat
diekstraksi dengan method get)*6
Sekali dipanggil jam5 maka lojik kondisional dapat
diputuskan untuk hal seperti sebelum tengah hari5
antara tengah hari dan jam I sore5 dan setelah jam I
sore6 Dapat pula dipanggil variable string partOfDay6D
&)*)& Mengimor 1e$erence
Da4at dii+at ba+2a tanda mera+ 4ada geemb$ng #$ning di
sisi #iri men$n<$##an adanya masaa+.
(inda+#an #$rsor diatas geemb$ng #$ning yang 4ertama dan
a#$#an #i#0#iri 4ada mo$se.
7/
(ii+ Add import for java6util6Calendar. Ingat ba+2a statemen
import java6util6CalendarG ditamba+#an #e bagian atas 4rogram dan
sem$a tanda mera+ dan #$ning a#an meng+iang. 'ode secara
sinta# tea+ di4erbai#i.
>%asalahnya adalah :etbeans tidak dapat menemukan
kelas Calendar yang diacu )reference*6 :amun5 ada
saran dimana tempat menemukan6 Hetika menerima
saran5 tambahkan statemen import pada kode6D
Sisi #anan sebe$m statemen return ?@G tamba+#an #ode
yang meneta4#an b$an saat ini!
80
'ode +asi #o4i dan 4aste se4erti ini !
// Determine the current month
int month = myCalendar.get(Calendar.0O12H);
5$ga da4at dig$na#an Alt-Shift-9 $nt$# mem4ercanti#
tam4ian.
Se#arang met+od greet)* da4at dia#+ir dengan menamba+#an
o<i# $nt$# membang$n message $nt$# ret$rn. Ingat ba+2a o<i#
ditamba+#an 4ada a#+ir met+od dan statement asi return tea+ diganti
dengan yang bar$!
// Create greeting
'tring greeting = ,Hello3 , 4 name 4 , Ha/e a great , 4 %artO&Day;
greeting 4= ,. 2ime goes &ast. 5e are already in month , 4 month;
greeting 4= , o& the year6,;
'ystem.out.%rintln(,Greeting is7 , 4 greeting);
return greeting;
Disini 4ada bagian ba2a+ met+od tam4a# !
=a#a #eas ?reeter secara $t$+ a#an teri+at !
81
>Disini kode untuk untuk kecocokan cutting dan
pasting6
"ni tampak lucu dengan menggunakan operator ?J@
pada se kumpulan kata-kata6 "ni merupakan cara cepat
untuk menggabungkan sekelompok kata-kata untuk
membuat kalimat6 "ngat bahwa nilai yang disisipkan
untuk variable partOfDay dan month yang
digabungkan6
-unakan Alt-Shift-9 untuk melakukan reformat kode6
82
"ngat bagaimana editor ;ava akan memberi tanda
warna pada statemen5 untuk kata cadangan akan
berwarna biru5 dan variable string akan berwarna hijau6
D
&)*)- Mengu2i Kelas 3ava
Unt$# meng$<i met+od greet)* di4er$#an tamba+an 4ada
met+od main se4erti diba2a+ ini. %amba+#an #ode disisi #anan setee+
baris public class ?-reeter >? !
%u8lic static /oid main('tring9: args) + Greeter greeter =
ne; Greeter(); greeter.greet(,0ic<ey 0ouse,);
}
Disini mer$4a#an tamba+an 4ada bagian atas #eas -reeter !
Unt$# meng$<i #eas) 4er$ men<aan#an met+od main)*.
Se+ingga #i# 4ada #e4aa 4ana+ 2arna +i<a$ 4ada bagian atas
2indo2.
=et+od greet)* ber<aan dan da4at dii+at diba+2a +asi dari
4ane Output!
8*
Hasinya teri+at se4erti ini!
Dari +asi teri+at masi+ ada masaa+ yait$ tida# ada message
dari =ic#ey =o$se.
Secara de&a$t) #eti#a memb$at 4roye# a4i#asi 5ava bar$) ma#a
#eas =ain secara otomatis <$ga a#an dib$at. Ini da4at dii+at dengan
mea#$#an e#s4ansi +irar#i -reeter;ava!roject!
81
'eas %ain men<adi I%ain ClassG yang ber<aan secara de&a$t)
#a4an4$n mengg$na#an c+evron +i<a$. Ca#$#an 7#un %ain !roject*
$nt$# 4ro<ect ini.
'em$dian di<aan#an %ain d$$) setea+ it$ bar$ di<aan#an
-reeter. Ini mer$4a#an #erang#a #ode #osong di daam #eas =ain.
'em$dian <aan#an #ode ?reeter. Unt$# mem4erbai#i adanya
error) a#$#an #i# #anan 4ada -reeter;ava!roject 4ada 4ane !rojects
dan 4ii+ !roperties.
Se4erti tam4a# 4ada gambar di ba2a+) 4ii+ #ategori #un dan
4ada &ied %ain Class g$na#an tombo $rowse $nt$# memii+ -reeter
sebagai %ain Class!
?$na#an i#on c+evron +i<a$ agai $nt$# mea#$#an 4eng$<ian
dan a#an di#eta+$i $aran di 4ane A$t4$t se4erti beri#$t ini !
Greeting is7 Hello3 0ic<ey 0ouse Ha/e a great a&ternoon. 2ime goes &ast.
5e are already in month . o& the year6
&)*)4 Debugging 'li+asi 3ava
86
%eta4i ternyata masi+ ada b$g. Se#arang a#an dicoba $nt$#
menem$#an b$g terseb$t dan mem4erbai#inya. Unt$# mem4erbai#i
b$g ma#a a#an dig$na#an deb$gger mea$i ang#a+0ang#a+ yang +ati0
+ati daam mea#$#an e#se#$si dari met+od greet)*!
(ada editor 5ava) tem$#an 4ada baris!
Calendar myCalendar K Calendar6get"nstance)*G
(ada margin di sisi #iri baris #ode) #i# se#ai $nt$# menandai
breakpoint. =a#a baris #ode a#an disorot 2arna mera+!
>$ukankah bulannya masih terlihat keliruL
%asalah ini dapat ditemukan tanpa menggunakan
debugger5 tetapi hal ini akan memberi peluang untuk
melakukan eksplorasi debugging6
$reakpoint merupakan statemen dalam program
dimana eksekusi dihentikan sementara )pause* pada
saat program dijalankan dengan debugging dalam
kondisi menyala6 Hetika eksekusi sampai pada bagian
breakpoint5 akan terlihat seputar variable untuk melihat
bagian dalam programnya6D
86
Ca#$#an e#se#$si dengan deb$gger dengan mea#$#an #i#
4ada i#on Debug %ain !roject 4ada bagian atas editor.
:#an teri+at e#se#$si ter+enti 4ada brea#4oint dan baris
#ode disorot 2arna +i<a$!
>;ika panel ocal Mariables tidak terlihat5 maka pilih
Windows & Debugging & ocal Mariables untuk
menampilkannya6
?Step Over@ memungkinkan untuk berpindah eksekusi
ke depan ke baris berikutnya6 ,ksekusi akan terhenti
lagi dan akan terlihat lagi seputar variabel6D
%em$#an 4ane ocal Mariables 4ada bagian ba2a+ <endea.
Ingat ba+2a variabe name se#arang mem4$nyai niai I%ickey
%ouseG.
%em$#an #endai deb$gger 4ada bagian atas <endea dan #i#
se#ai 4ada i#on Step Over!
%eri+at ba+2a deb$gger ber4inda+ #e ba2a+ #e #ode yang
meneta4#an <am saat ini. -aris #ode ini #em$dian ditandai dengan
2arna +i<a$.
87
'i# Step Over agi dan i+at 4ada 4ane ocal Mariables $nt$#
mei+at niai dari variabe hour.
Da4at dii+at niai 4ada 4ane ocal Mariables ber$ba+ #eti#a
ber4inda+ #e #ode time. @ariabe partOfDay a#an diat$r berdasar#an
airan mea$i statemen if&else.
Ca#$#an #i# Step Over sam4ai #e baris #ode beri#$t!
int month = myCalendar.get(Calendar.0O12H);
Com4ati #ode int month K
myCalendar6get)Calendar6%O:4+*G dan i+at niai $nt$# variabe
month variabe se4erti tam4a# 4ada 4ane ocal Mariables.
:#+irnya ditem$#an niai month yang saa+. 5i#a ini "ebr$ary)
ma#a month berniai B) b$#an 1.
'i# #endai deb$gger Continue $nt$# menga#+iri sesi
deb$gging.
Se4erti sebe$mnya) a#an tam4a# tam4ian greeting 4ada
4ane A$t4$t mengi#$ti baris #ode!
System6out6println)N-reeting is< N J greeting*G
88
Se+ingga) a4a masi+ ada yang saa+ dengan baris #ode iniN!
int month = myCalendar.get(Calendar.0O12H);
Se#arang g$na#an b$it0in code dan do#$mentasi $nt$#
men+a2ab masaa+ ini.
&)*)5 Meleng+ai Ko/e
>?Code completion@ merupakan fitur "D, standard yang
akan secara otomatis membantu dalam melengkapi
staemen kode6 !ada kasus ini5 editor mengetahui
myCalendar sebagai instantiasi dari kelas Calendar
sehingga code completion menunjukkan atribut dan
method yang tersedia6D
Ceta##an 4osisi #$rsor 4ada editor di bagian a#+ir dari baris int
month = myCalendar.get(Calendar.0O12H) dan te#an ,nter $nt$# mem$ai
baris bar$. 'em$dian #eti##an! myCalendar
Se#arang) te#an #$nci period #eti#a mengeti##an sisa #ode.
'em$dian) 4a$se. "it$r code completion a#an m$nc$ dan teri+at
<endea 4o40$4.
&)*)6 Do+umentasi Kelas 3ava
>Dokumentasi untuk definisi kelas ;ava disebut
?javadoc6@ !ada :et$eans5 code completion dan
javadoc ditampilkan bersama sehingga terbuka
kemungkinan melengkapi statemen yang berkaitan
dengan dokumentasi6D
8/
Se4erti yang dit$n<$##an diatas) a#$#an scro do2n 4ada
atrib$t %O:4+ dan #i# 4ada atrib$t it$. Do#$mentasi 4ada dis4ay
diatas ber$ba+. Ingat bagaimana %O:4+ dide&inisi#an!
“2he &irst month o& the year in the Gregorian and =ulian
calendars is =#1U#$ ;hich is >.”
/0
(en<easan ini mer$4a#an masaa+nya. =et+od memberi#an
ret$rn niai #$rang dari yang diingin#an!
myCalendar6get)Calendar6%O:4+*
(erbai#annya c$#$4 seder+ana yait$ menamba+ niai 1 4ada
ret$rn get)*) se+ingga c$#$4 a#$#an edit 4ada baris ini!
int month = myCalendar.get(Calendar.0O12H);
men<adi!
int month = myCalendar.get(Calendar.0O12H) 4 );
5$ga +a4$s #ode 4ada myCalendar6
Ca#$#an Save All.
Ca#$#an test $ang 4ada #eas ?reeter dengan mea#$#an #i#
4ada i#on #un %ain !roject.
Ci+at 4ada 4ane Output 4ane) ang#a mont+ s$da+ teri+at
benar!
Ingat ba+2a .et-eans tea+ mengeta+$i 4er$ba+an #ode yang
dib$at dan# ode yang di4er$#an $nt$# mea#$#an #om4iasi $ang
sebe$m die#se#$si. Se+ingga #eti#a mea#$#an #i# 4ada #un %ain
!roject) ma#a a#an menam4i#an ang#a+ #om4iasi secara otomatis.
/1
>:et$eans memanfaatkan utility Ant untuk melakukan
kompilasi5 deployment dan ekseskusi6 Skrip Ant
tersusun dari tasks dan tiap task dapat
mendeklarasikan ketergantungan pada task lain6
Hetika menjalankan pilihan menu #un %ain !roject5
Ant akan menjalankan task yang dieksekusi yang
sudah diselesaikan sebelum eksekusi yang
sesungguhnya6D
.# +embuat User Interface ;ava
(ada 4roye# ini ) a#an dibang$n 5ava $ser inter&ace yang
men<aan#an met+od greet)* 4ada #eas 5ava -reeter. ?UI ini
mem4$nyai &ied entry data $nt$# mengin4$t nama $ser dan tombo
-reet yang a#an meminta met+od greet)* $nt$# memb$at dan
menam4i#an greeting yang tea+ di#$stomisasi. User inter&ace yang
dibang$n ini 4ada 4roye# yang sama se4erti yang dig$na#an 4ada
4roye# sebe$mnya.
&)()* Membuat La!out
>Helas user interface merupakan kelas ;ava sama
seperti yang telah dibuat pada project akhir5 namun
kelas ini menurunkan behavior dari kelas induk yang
dinamakan ;9rame D
-$at #eas 5ava yang bar$ $nt$# $ser inter&ace dengan
mea#$#an #i#0#anan 4ada -reeter;ava!roject 4ada 4ane !rojects
dan 4ii+ :ew & ;9rame 9orm. 5endea 2iEard :ew ;9rame 9orm
a#an m$nc$.
Unt$# Class :ame) #eti#! -reeter7" dan $nt$# !ackage) #eti# !
ui
/2
'i# 9inish dan a#an teri+at &ie -reeter7"6java ditamba+#an #e
+irar#i 4roye#. 'anvas design a#an m$nc$. :#an ditamba+#an 2idget
$ser inter&ace di #anvas ini.
Drag dan dro4 #om4onen abel dari bagian Swing Controls
dari 4ane !alette #e #anvas. Cabe 7jabelC8 a#an ditamba+#an #e
ayo$t. 'i#0do$be 4ada 2idget dan $ba+ te#s abe men<adi :ame<
>;ika panel !alette tidak tampak5 gunakan pilihan menu
bar Window & !alette untuk menampilkannya6 !ada
saat melakukan drag objek palette ke kanvas5 kode
;ava untuk komponen trsebut secara otomatis akan di-
generated6D
Drag #om4onen4e0t 9ield dari bagian Swing Controls dari
4ane (aette #e #anvas. Dro4 di sebea+ #anan dari abe :ame. %e9t
&ied 7j4e0t9ieldC8 a#an ditamba+#an.
'i# 4ada 2idget j4e0t9ieldC dan teri+at 4ane !roperties
men$n<$##an niai ter#ini. Ha4$s niai 4ada 4ro4erty 4e0t #arena tida#
dib$t$+#an.
'i# 4ada contro Code 4ada 4ane !roperties dan $ba+ 4ro4erty
Mariable :ame dari te9t &ied dari j4e0t9ieldC men<adi name4e0t9ield
> ;ika panel !alette tidak tampak5 gunakan pilihan
menu bar Window & !alette untuk menampilkannya6
;ika tanpa sengaja melakukan klik-double pada
j4e0t9ieldC5 maka akan masuk ke view Source6
akukan klik ke kendali Design pada pojok kiri atas dari
editor untuk kembali lagi ke mode Design6
Dengan penamaan ulang field entri5 maka nama
variable pada kode akan lebih bermaknaD
/*
'i# 4ada #ontro !roperties 4ada 4ane !roperties. Unt$# te9t
&ied $ba+ niai 4ro4erty columns men<adi ! OP6
>"ni akan mengatur panjang te0t field yaitu OP
characters6 Widget pada kanvas juga akan seketika
mengikuti6D
Drag 2idget $utton #e daam #anvas dan di daam <endea
!roperties dan dro4 diba2a+ te9t &ied. Uba+ 4ro4erty te0t dari <-$tton1
men<adi ! -reet Ini a#an mer$ba+ abe b$tton 4ada #anavas.
>;ika tanpa sengaja melakukan klik-double pada
tombol -reet maka akan berubah ke mode Source6
Hlik kendali Design untuk kembali ke mode Design D
Dan a#+irnya) drag 2idget 4e0t 9ield diba2a+ b$tton se+ingga
da4at ditam4i#an greeting yang di+asi#an.
Ha4$s niai di daam 4ro4erty te0t dari te9t &ied #arena ini
mer$4a#an tem4at greeting a#an ditam4i#an.
/1
'i# 4ada contro Code dan $ba+ 4ro4erty Mariable :ame dari
te9t &ied dari j4e0t9ieldC men<adi! greeting4e0t9ield #
7Sekarang5 nama te0t field lebih mempunyai arti dalam
kode ;ava6D
'embai #e area !roperties $nt$# te9t &ied) dan $ba+ niai
4ro4erty columns men<adi EP6
>+alini memberikan ruang yang lebih longgar untuk
greeting yang akan dihasilkan6D
:t$r $ang ayo$t se+ingga tam4a# se4erti ini!
&)()( Menambah Event 8an/ler Behavior
Se#arang tamba+#an o<i# $nt$# button handler $nt$# meminta
met+od greet)* dari #eas ?reeter.
/6
'i#0do$be 4ada b$tton -reet $nt$# mas$# #e mode Source.
:#an teri+at ba+2a editor 5ava ditam4i#an dan #$rsor di4osisi#an di
daam b$ttonKs +ander bernama j$uttonCAction!erformed6
> ?button handler@ merupakan sebuah event handler
yang akan memerangkap klik mouse5 misalnya5 serta
menyediakan lojik yang akan diminta6D
?anti#an te#s 4ace+oder 7 && 4ODO add your handling
code here<8 dengan #ode beri#$t ini!
'tring name = ('tring) name2e?t"ield.get2e?t(); Greeter
myGreeter = ne; Greeter();
'tring greeting = myGreeter.greet(name);
greeting2e?t"ield.set2e?t(greeting);
?$na#an Alt-Shift-9 $nt$# re&ormat #ode.
>Setelah melakukan copy dan paste pada kode ini5
gunakan Alt-Shift-9 untuk melakukan reformat
sehingga baris indent akan tampak menarik5 sehingga
kode lebih dapat dibaca dan lebih mudah untuk di
debug6D
:da bebera4a error yang dit$n<$##an oe+ i#on #$ning dan
mera+ 4ada margin #iri dari editor.
'i# boam 74ento8 #$ning 4ada gambar diba2a+ dan 4ii+ Add
import for greeting6-reeter !
>Statemen berikut ini ditambahkan pada bagian atas
dari kelas< import greeting6-reeterGD
/6
Statemen import ditamba+#an 4ada bagian atas dari #eas
-reeter7" dan sem$a tanda error enya4.
Ca#$#an 4enyim4anan dengan Save All.
'i#0#anan 4ada -reeter;ava!roject dan 4ii+ Clean and $uild
o4tion $nt$# #om4iasi d$a #eas 7-reeter dan -reeter7"8.
(er+ati#an 4ane A$t4$t $nt$# mengece# 4esan error.
>Clean and $uild berarti menghapuskan bebera kode
dan menampilkan kompilasi lagi6D
Se#arang #eas -reeter7" tea+ ditamba+#an 4ada
-reeter;ava!roject) -reeter7" 7b$#an-reeter8 se+ar$snya men<adi
#eas main 4ada 4roye#. Se4erti yang tea+ di<eas#an) #eas main
mer$4a#an #eas yang secara otomatis dia2ai #eti#a 4roye#
r$nning.
> Clean and $uild menghasilkan pesan error yang
menunjukkan bahwa directory tidak dapat dihapus6
/7
Harena itu lebih baik gunakan pilihan $uild saja5
daripada Clean and $uild6D
Se#arang a#an di$ba+ %ain Class $nt$# -reeter;ava !roject
dari -reeter men<adi -reeter7".
'i#0#anan -reeter;ava!roject 4ada 4ane !rojects dan 4ii+
!roperties. 5endea !roject !roperties a#an ditam4i#an.
'i# node #un 4ada +irar#i di sebea+ #iri $nt$# menam4i#an
rincian cara 4roye# ini a#an die#se#$si.
%em$#an &ied #eas %ain) #i# 4ada b$tton $rowse dan 4ii+
#eas ui6-reeter7". 'i# b$tton Select %ain Class dan #i# A'.
Se#arang) #eti#a 4roye# r$nning) ma#a ?reeterUI yang a#an
die#se#$si 4ertama #ai.
>?ui@ merupakan nama paket yang ditetapkan ketika
membuat kelas -reeter7"6D
'i# Ok $nt$# mengabai#an <endea !roject !roperties 2indo2.
Ca$ a#$#an save a agi <i#a di4er$#an.
&)(), Mengu2i 3ava 0ser Inter$ace
'i# 4ada i#on #un %ain !roject 7c+evron +i<a$8 4ada bagian atas
<endea.
5endea $ser inter&ace a#an m$nc$. 'eti# nama 4ada &ied :ame
dan te#an b$tton -reet. ?reeting yang di+ara4#an a#an m$nc$ 4ada
&ied te9t &ied diba2a+nya!
/8
-ar$ sa<a dib$at 5ava $ser inter&ace yang ber#oaborasi
dengan #eas -reeter $nt$# menam4i#an greeting yang
di#$stomisasi.
%$t$4 <endea greeting dengan #i# 4ada H mera+ di sisi #anan
atas.
Sean<$tnya a#an dib$at dan ditest 2eb service yang
menge#s4ose -reeter #e #ient non05ava 7se4erti #ien SA:(8.
>Dengan kata lain5 -reeter !O;O akan dibungkus
dengan sebuah web service6 !O;O adalah singaktan
dari ?!lain Old ;ava Object6@D
.#" +embangun Web Service
(ada (ro<ect sebe$mnya) tea+ dibang$n #eas -reeter dengan
met+od greet)* yang da4at meng+asi#an 4esan seamat datang.
(ada (ro<ect 2) tea+ dib$at $ser inter&ace $nt$# memanggi -reeter
dan menam4i#an +asi met+od greet)* 4ada $ser inter&ace. Se#arang
//
#eas -reeter +anya da4at dia#ses mea$i cient 5ava yang ber<aan
4ada mesin 5@= yang sama.
Dang dib$t$+#an adaa+ -reeter yang tersedia $nt$# berbagai
cient yang ber<aan di mana4$n. Unt$# #eb$t$+an terseb$t) tea+ ada
te#noogi 2eb services. (ada 4roye# ini) #eas -reeter a#an
diGb$ng#$sG daam ;nter4rise 5ava-ean 7;5-8. 'em$dian ;5- a#an
die#s4ose sebagai end4oint 2eb service. Dengan adanya 2eb
services berbasis SA:( ma#a #eas ?reeter a#an secara me$as
da4at dia#ses.
&),)* Membuat Pro2ect E3B
>%odul ,;$ merupakan paket ;ava ,, yang berisi
,nterprise ;ava$eans ),;$*6 ,;$ merupakan
komponen ;ava pada sisi server yang berjalan pada
sebuah server aplikasi6 ,;$ dirancang sebagai rumah
lojik yang digunakan dalam sebuah aplikasi6D
-$at 4roye# bar$ dengan memii+ 9ile & :ew !roject. WiEard :ew
!roject a#an m$nc$.
Unt$# Categories) 4ii+ ;ava,,. Unt$# !rojects) 4ii+ ,;$
%odule. 'em$dian) #i# :e0t.
Unt$# !roject :ame) #eti# -reeter,;$!roject
'i# :e0t dan #em$dian 9inish dan abai#an <endea 2iEard.
-reeter,;$!roject a#an m$nc$ 4ada 4ane !rojects.
100
Unt$# memb$at ;5-) #i# #anan node -reeter,;$!roject
dan 4ii+ :ew & Session $ean. 5endea 2iEard :ew Session
$ean a#an m$nc$.
Unt$# ,;$ :ame) #eti# -reeter,;$
Unt$# !ackage) #eti# greeting
'i# 9inish to $nt$# menerima niai de&a$ts dan abai#an <endea
2iEard. 'ode -reeter,;$$ean6java a#an m$nc$ di editor!
>:et$eans menaruh komentar pada kode yang di-
generated sehingga dapat diketahui letak kode yang
akan disisipkan6 Homentar tersebut akan diganti
dengan menambahkan sebuah operasi )behavior atau
method* untuk kelas ini6D
(osisi#an c$rsor 4ada ban# diba2a+ #omentar) #i# #anan dan
4ii+ "nsert Code & Add $usiness %ethod. 5endea 2iEard Add $usiness
%ethod a#an m$nc$.
Unt$# :ame) #eti#! greet
Unt$# #eturn 4ype) #eti#! java6lang6String
?$na#an tombo Add $nt$# menamba+ 4arameter in4$t
java6lang6String dan #eti# name
101
(ii+ OH dan abai#an <endea 2iEard. =et+od greet)* a#an
ditamba+#an #e ;5-.
Ha4$s d$a baris #omentar dan ;5-I a#an teri+at se4erti ini!
Se#arang di daam met+od greet)* yang bar$) a#an diinstantioasi
#eas -reeter dan <aan#an met+od greet)*.
102
?anti #ode return nullG dengan #ode beri#$t !
Greeter myGreeter = ne; Greeter();
'tring greeting = myGreeter.greet(name);
return greeting;
?$na#an Alt-Shift-9 $nt$# mea#$#an re&ormat #ode. Ingat ba+2a
adanya 2arna #$ning dan mera+ 4ada margin #iri) mer$4a#an tanda
adanya masaa+!
(inda+#an #$rsor 4ada bagian atas dari i#on mera+ di margin #iri
dan di#eta+$i ba+2a editor tida# da4at menem$#an #eas -reeter.
'arena it$ di4er$#an 4enamba+an #eas -reeter;ava!roject sebagai
ibrary daam -reeter,;$!roject.
>7ntuk baris pertama disebut sebagai ?constructor@
untuk kelas -reeter6 Honstruktor ini menciptakan
instance dari kelas6 Hita akan menyimpan pointer yang
merupakan instance dalam sebuah variable yang
dinamakan my-reeter6
$ari kedua disebut method greet)* yang akan
melewatkan nama input6 +asil dari method greet)*
disimpan pada variable yang dinamakan ?greeting@
10*
Statemen return menyederhanakan nilai yang
dilewatkan dari variable greeting6D
&),)( Menambah Librar! +e Pro2ect
'i# #anan 4ada node -reeter,;$!roject di daam 4ane
!rojects dan 4ii+ !roperties. 5endea !roject !roperties a#an
m$nc$.
(ii+ node ibraries 4ada 4ane #iri. 'em$dian) #i# tombo
Add !roject dan navigasi#an #e -reeter;ava!roject5 #em$dian 4ii+
dan #i# tombo Add !roject ;A# 9iles. :#an tam4a#!
'i# OH $nt$# mengabai#an <endea !roperties.
=a#a .et-eans a#an Imema#anG ibrary dan i#on mera+ tanda
error a#an +iang dari editor.
101
>"ni akan memungkinkan kelas-kelas pada
-reeter,;$!roject untuk mencapai ke dalam
-reeter;ava!roject dan memanfaatkan kelas ini6D
&),), Membuat "eb #ervice
>Web service merupakan kemampuan sisi server yang
dapat di-invoke dengan mengirimkan sebuah dokumen
'% )diformat mengikuti aturan dalam SOA!
specification*6 Web service menerjemahkan '% ke
dalam input yang diperlukan5 melakukan tugasnya dan
membuat dokumen '% SOA! yang berisi hasil6
Dokumen '% dikembalikan ke klien yang dipanggil
web service6
Hlien web service client tidak memperdulikan
bagaimana cara kerjanya5 sepanjang ia dapat
kembalian berupa '% dalam SOA!6D
Se#arang tea+ ada ;5- yang da4at Imemb$ng#$sG dan
bertinda# sebagai 2eb service. 'em$dian a#an dib$at 2eb service
berdasar ;5-.
'i# #anan -reeter,;$!roject dan 4ii+ :ew & Web Service.
5endea 2iEard :ew Web Service a#an m$nc$.
Unt$# Web Service :ame) #eti# -reetingService
Unt$# !ackage) 4ii+ greeting dari drop down list.
'i# 4ada radio b$tton $nt$# Create Web Service from ,0isting
Session $ean dan g$na#an tombo $rowse $nt$# memii+
-reeter,;$$ean!
106
'i# tombo 9inish. Web service ditambi#an di #anvas $tama.
Ci+at #ode yang di+asi#an!
>$aris Q merupakan ?annotations@ yang
memungkinkan kode java melakukan beberpa code
generation pada saat kompilasi6 !ada kasus ini5
annotations memberitahu bahwa -reetingService calls
adalah berupa stateless ,;$ yang dapat diakses
sebagai web service6
Di dalam method greet)* web service5 tampak hasil
panggilan dari method ,;$2s greet)*6D
106
Ca#$#an e#s4ansi 4ada node Web Services diba2a+
-reeter,;$!roject daam 4ane !rojects $nt$# mei+at 2eb service
yang terda&tar disini.
>!erhatikan panel Output untuk pesan ?$7"D
S7CC,SS97@ ketika clean and build telah lengkap6
Clean and $uild6D
Ca#$#an e#s4ansi 4ada node Web Services diba2a+
-reeter,;$!roject daam 4ane !rojects $nt$# mei+at 2eb service
yang terda&tar disini.
Ca#$#an Save All .
Ca#$#an #om4iasi #ode -reeter,;$!roject dengan #i#0#anan
4ada node -reeter,;$!roject dan 4ii+ Clean and $uild 7ata$ $uild
sa<a8.
De4oy -reeter,;$!roject #e server a4i#asi ?ass"is+ dengan
#i#0#anan -reeter,;$!roject dan memii+ 4ii+an 7ndeploy and
Deploy.
107
Dengan ;5- yang dide4oy sebagai 4emb$ng#$s 2eb services)
se#arang da4at ditest dengan menge#se#$si test cient $nt$# 2eb
service.
>$utuh waktu sebentur ketika melakukan deploy untuk
pertama kali5 karena server aplikasi perlu dinyalakan
sebelum modul ,;$ dapat dideploy6 !erhatikan panel
Output6D
&),), Mengu2i "eb #ervice
.et-eans a#an mem$da+#an testing 2eb service dengan
memb$at +aaman 2eb $nt$# test yang da4at memas$##an niai
in4$t dan memanggi o4erasi 2eb service.
'i#0#anan node -reetingService diba2a+ Web Services 4ada
-reeter,;$!roject dan 4ii+4est Web Service 4ada men$ 4o40$4.
108
Haaman bro2ser a#an tam4a# dan menyedia#an test cient. 'eti#
niai $nt$# name 7misanya %ickey %ouse8 4ada &ied #osong. (ii+
tombo greet6
Haaman +asi a#an m$nc$. Ingat ba+2a 2eb service
meng+asi#an niai yang di+ara4#an!
Se#arang i+at $ang a4a yang tea+ di#er<a#an. Web service
menyedia#an I4emb$ng#$sG yang men<aan#an -reeter,;$$ean yang
be#er<asama dengan met+od -reeter2s greet)*.
10/
'arena 2eb services mengg$na#an do#$men H=C sebagai
Iing$a &rancaG $nt$# #om$ni#asi) ma#a met+od greet)* se#arang da4at
di<aan#an oe+ berbagai cient yang da4at mea#$#an 4emanggian
2eb service. -anya# cients da4at memb$at 4emanggian 2eb services
#arena #emam4$an SA:(/H%%( tersedia 4ada sem$a 4at&orm.
(ada 4roye# sean<$tnya) a#an didemo#an #emam4$an cient 2eb
service dengan memb$at $ser inter&ace berbasis bro2ser $nt$#
men<aan#an -reetingService.
>"ngat bahwa web service menerima dokumen '%
input5 melakukan beberapa pemrosesan dan
mengembalikan result dalam bentuk dokumen '%6
+asilnya5 perhatikan bahwa bagian SOA! #e(uest
menunjukkan input dikirimkan oleh tester6 $agian
SOA! #esponse menunjukkan output yang diterima
dari hasil eksekusi method web service6D
&)&)& Membangun Inter$ace Bro9ser
Dengan menem4at#an 2eb service 4ada a#+ir 4roye#) a#an
dib$at seb$a+ service yang da4at dia#ses secara $niversa. Sem$a
cons$mer b$t$+ mea#$#an 4engiriman 4esan SA:( H=C dan
mengirim #embai +asi daam 4esan SA:( H=C. (ada 4roye# ini)
a#an dibang$n $ser inter&ace berbasis bro2ser yang menyedia#an
cient $niversa $nt$# men<aan#an 2eb service.
>Hita akan menaruh user interface dalam proyek baru
sebab jenis proyek yang berbeda dari proyek ;ava dan
,;$ telah dibuat diawal6 !ada saat ini5 akan dibuat
proyek apalikasi web6 D
110
-$at 4roye# bar$ $nt$# cient berbasis bro2ser dengan memii+
9ile & :ew !roject. 5endea 2iEard :ew !roject a#an m$nc$.
Unt$# Categories) 4ii+ ;ava Web dan $nt$# !rojects) 4ii+ Web
Application dan #i# :e0t
Unt$# !roject :ame) #eti# -reeterWeb!roject dan #i# :e0t6
'i# :e0t agi $nt$# menerima de&a$t 4ada Server dan Conte0t
!ath6
'i# 4ada check bo0 $nt$# memii+ Misual Web ;avaServer
9aces. 'i# 9inish. WiEard a#an eng#a4 dan -reeterWeb!roject a#an
tam4a# 4ada 4ane !rojects.
>:et$eans membuat miudah dalam menggunakan
teknologi ;avaServer !ages );S!* ;avaServer 9aces
);S9* untuk membuat user interface berbasis browser6
;S! adalah komponen yang menghasilkan halaman
user interface untuk aplikasi web6 Homponen ;S9
diguankan dalam halaman ;S! untuk menyediakan
visual widgets )seperti te0t fields dan buttons*6D
-$at $ser inter&ace berbasis dengan #i#0#anan 4ada
-reeterWeb!roject dan 4ii+ :ew & Misual Web ;S9 !age. 5endea
2iEard a#an m$nc$.
111
Unt$# 9ile :ame) #eti# -reeterWeb7" dan 4ii+ 9inish.
5endea 2iEard a#an tert$t$4) &ie -reeterWeb7"6jsp a#an
ditamba+#an #e +irar#i 4roye# dan #anvas desain a#an m$nc$.
Dari 4aette) a#$#an drag0dro4 2idget abel #e #anvas. Uba+
abe men<adi :ame<
Drag0dro4 2idget4e0t 9ield dari 4aete #e #anvas. %em4at#an di
sebea+ #anan :ame<
(ada 4ane !roperties) $ba+ 4ro4erty id men<adi name4e0t9ield
:t$r 4ro4erty columns men<adi OP
Drag0dro4 2idget $utton #e #anvas) dan tem4at#an diba2a+ te9t
&ied.
Uba+ abe tombo 74e0t 4ro4erty8 men<adi -reet
Drag0dro4 4e0t 9ield ain #e #anvas diba2a+ tombo.
Uba+ 4ro4erty te9t &ied – $nt$# id) #eti##an greeting4e0t9ield dan
$nt$# columns) #eti# CBP
:t$r $ang #om4onen se+ingga ayo$t a#an tam4a# se4erti ini!
Sim4an dengan mea#$#an Save All.
'i# 4ada 4ii+an ;S! 4ada bagian atas #anvas $nt$# mei+at
#ode 5avaServer (ages yang dib$at .et-eans didasar#an 4ada ayo$t.
112
Sinta#s 5S( a#an meneta4#an bagaimana H%=C di+asi#an dan
di#irim #e bro2ser.
>!erlu dilakukan klik-kanan pada kanvas dan
mengeksplorasi pilihan Align6 Snap to -rid juga
berguna6 ;ika tidak menginginkan te0t field dapat
diubah5 maka lakukan disabled property untuk
greeting4e0t9ield6D
'i# 4ada 4ii+an ;ava vie2 7sebea+ ;S! vie28 $nt$# mei+at
#ode 5ava 4ada sisi server yang di+asi#an .et-eans. 'ode ini a#an
meres4on intera#si $ser dari +aaman H%=C.
Membuat Klien "eb #ervice
Se4erti yang tea+ di#er<a#an 4ada ;ava user interface) masi+
di4er$#an o<i# $nt$# menangani action dari tombo -reet.
'embai #e vie2 Design dengan #i# 4ada #endai Design.
'i#0do$be 4ada tombo -reet 4ada #anvas $nt$# menam4i#an
4orsi 4enanganan action dari #ode <ava. (ada 4osisi di daam
buttonCAaction)* method<
11*
(ada saat $ser mea#$#an #i# tombo -reet) ma#a a#an
di4anggi 2eb service yang dib$at 4ada 4roye# tera#+ir ini. Unt$#
memanggi 2eb service) ma#a 4er$ dib$at #ode di sisi cient yang
da4at menga#ses 2eb services mea$i SA:( yang di#irim e2at H%%(
dan menerima #embai res4on.
'ode #ien dari 2eb service a#an di4anggi dari daam b$tton
+ander) teta4i 4ertama #ai 4er$ dib$at #ode nya d$$. 'em$dian
tingga#an met+od buttonCAaction)* dan b$at #ien yang a#an
memanggi met+od terseb$t.
(ada node -reeterWeb!roject 4ada 4ane !rojects) #i#0#anan
dan 4ii+ :ew & Other & Web Services & Web Service Client. 'i# :e0t.
5endea 2iEard a#an m$nc$.
(ada &ied !roject) g$na#an b$tton $rowse $nt$#
menavigasi -reetingService 4ada -reeter,;$!roject) 4ii+ dan
#i# OH.
'i# 9inish $nt$# mengabai#an 2iEard.
Setea+ 4a$se sebentar) a#an teri+at ba+2a #ode #ien 2eb
service cient ditamba+#an 4ada 4roye#!
111
>!erhatikan tab #etrieve Output pada jendela Output
untuk melihat web service diakses dank doe klien web
service di-generated6
Akan terlihat bahwa -reetingService ditambahkan
dibawah node Web Service #eferences pada hirarki
-reeterWeb !roject6D
Menambah Event 8an/ler Behavior
Se#arang) tea+ ada #ode #ien $nt$# meminta dari b$tton action
+ander) 4er+ati#an #embai <endea 5ava editor yang menam4i#an
#ode $nt$# +aaman -reeterWeb7"6jsp.
(osisi#an #$rsor edit diba2a+ d$a baris #omentar 4ada met+od
buttonCAaction)* dan te#an ,nter $nt$# memb$at baris #osong bar$.
'i#0#anan 4ada baris #osong dan 4ii+ Web Service Client
#esources & Call Web Service Operation. (ii+ Select Operation agar
<endea 2iEard "nvoke m$nc$.
(ii+ met+od greet 4ada bagian ba2a+ +irar#i dan #i# OH<
116
'em$dian #ode $nt$# mea#$#an invo#e #ien 2eb service a#an
ditamba+#an 4ada met+od buttonCAaction)*.
?$na#an Alt-Shift-9 $nt$# mea#$#an re&ormat #ode) +a4$s d$a
baris #omentar 4ada bagian atas) ma#a met+od a#an teri+at se4erti ini!
116
>Sekarang ada kerangka yang dapat memanggil sisi
server web service6 Hita perlu mengisi sisa dari kode
event handler sehingga dapat memanggil dengan data
yang diperlukan )name* dan menggunakan data
)greeting*6D
Ca#$#an 4enyim4anan dengan Save All.
Uba+ #ode 4ada +ander se+ingga met+od tam4a# se4erti ini!
Ini mer$4a#an #ese$r$+an #ode di daam bo# try yang da4at
dico4y04aste!
greeting.Greeting'er/ice %ort = ser/ice.getGreeting'er/ice@ort(); 'tring
name = ('tring) name2e?t"ield.get2e?t();
'tring greeting = %ort.greet(name);
greeting2e?t"ield.set2e?t(greeting);
'ystem.out.%rintln(,esult = , 4 greeting);
>Hode tersebut melakukan<
0 Dapatkan nilai yang dimasukkan ke dalam
field :ame pada 7"
0 memanggil web service yang melewatkan
nilai nama6
117
0 %eletakkan hasil greeting dalam field user
interface6
0 mengirim greeting ke log file untuk tujuan
debugging6D
?$na#an Alt-Shift-9 $nt$# mea#$##an re&ormat #ode se+ingga
ebi+ da4at tertata.
:#an teri+at i#on 4ada margin #iri yang men$n<$##an masaa+.
5i#a mo$se digeser diatasnya) a#an teri+at ba+2a editor tida# da4at
menem$#an re&erences $nt$# d$a te9t &ieds! name4e0t9ield dan
greeting4e0t9ield. Sean<$tnya ini a#an di4erbai#i.
'i# 4ada tab Design $nt$# #embai #e #anvas ayo$t. %am4a#
ada masaa+!
>%asalahnya terletak pada widget dalam layout ;S!
yang tidak berkaitan dengan representasi dalam kode
;ava dari ;S92s ?backing bean@D6
118
Ini berarti ba+2a #anvas ayo$t tida# da4at didis4ay $ang #arena
ada ses$at$ yang saa+ dengan #ode 5ava.
'embai #e vie2 ;ava dan beri tanda comment 7//8 4ada em4at
baris #ode 4ada bo# try!
"it$r Add $inding Attribute menamba+#an #ode <ava se+ingga
#ita da4at mem4$nyai re&erensi yang ber#aitan dengan ob<e# se4erti
name4e0t9ield dan greeting4e0t9ield yang dire&erensi daam ayo$t
5S(. =isanya) $nt$# te9t bo9 name4e0t9ield) baris beri#$t 4er$
ditamba+#an!
%ri/ate 2e?t"ield name2e?t"ield =
ne; 2e?t"ield();
%u8lic 2e?t"ield get1ame2e?t"ield()
+
return name2e?t"ield;
}
%u8lic /oid set1ame2e?t"ield(2e?t"ield t&)
+
this.name2e?t"ield = t&;
11/
}
'embai agi #e vie2 Design dan ayo$t tam4a# se4erti
sebe$mnya.
'i# #anan 4ada name4e0t9ield 7sebea+ abe :ame8 4ada
#anvas ayo$t dan 4ii+ Add $inding Attribute dari men$ 4o40$4.
'i#0#anan 4ada greeting4e0t9ield 7di ba2a+ b$tton
-reet8 dan 4ii+ Add $inding Attribute.
'embai #e vie2 ;ava dan +iang#an tanda comment 4ada #e
em4at baris diatas. Ingat ba+2a setea+ ini tida# agi ada masaa+
dengan #ode.
Ca#$#an 4enyim4anan Save All.
Mengu2i 'li+asi "eb
Ca#$#an #om4ie 4ada #ode dengan mea#$#an #i#0#anan
4ada -reeterWeb!roject 4ada 4ane !rojects dan 4ii+ Clean
and $uild.
De4oy a4i#asi 2eb #e server a4i#asi dengan mea#$#an #i#0
#anan 4ada -reeterWeb!roject dan 4ii+ Deploy.
>!erhatikan panel Output untuk pesan sebagai hasil
dari Clean and $uild and 7ndeploy and Deploy6
Clean and $uild menghasilkan pesan error yang
menunjukkan direktori tidak dapat dihapus6 7ntuk itu
lakukan $uild saja dan bukan Clean and $uild6D
Ca#$#an test 4ada $ser inter&ace berbasis bro2ser dengan
mea#$#an #i#0#anan 4ada -reeterWeb!roject dan 4ii+ #un6
120
-ro2ser 2eb a#an teri+at dan tam4a# sebagai +aaman #osong.
:4a yang ter<adiN
Se4erti 4engaaman sebe$mnya) masaa+ ini mer$4a#an
masaa+ de&a$t 4ada 4roye#. 'arena ini mer$4a#an 4roye# 2eb) ini
mer$4a#an +aaman 5S(. Sean<$tnya a#an dice# a4a de&a$t +aaman
5S( $nt$# -reeterWeb!roject.
(rogramer 5ava ;; s$da+ 4a+am ba+2a +aaman yang 4ertama
#ai ditam4i#an adaa+ +aaman yang diteta4#an 4ada seting welcome
file 4ada deployment descriptor.
'i#0do$be 4ada node web60ml diba2a+ +irar#i
-reeterWeb!roject & Web !ages & W,$-":9 4ada <endea !rojects.
@ie2 design dari de4oyment descri4tor a#an ditam4i#an. 'i# 4ada tab
!ages!
Ci+at ba+2a &ied Welcome 9iles diset $nt$# &aces/!ageC6jsp dan
ini b$#an +aaman yang diingin#an Dan ini adaa+ de&a$t yang
121
disedia#an #eti#a memb$at a4i#asi 2eb bar$. Haaman 5S( yang
dib$at adaa+ -reeterWeb7"6jsp dan tam4a# 4ada bagian Web !ages
dari 4roye#!
Sean<$tnya g$na#an vie2 '% $nt$# memb$at +aaman
-reeterWeb7"6jsp sebagai +aaman de&a$t yang ditam4i#an 4ertama
#ai #eti#a $ser menga#ses a4i#asi. ?$na#an &it$r find 7Ctrl-98 4ada
vie2 '% secara ce4at dan a#$#an scro #e area welcome-file-list dari
de4oyment descri4tor b$at men<adi se4erti ini!
>7ntuk memudahkan melakukan copy dan paste5 disini
nilai baru< faces&-reeterWeb7"6jspD
122
Ca#$#an 4enyim4anan dengan Save All.
Se#arang) a4i#asi 2eb s$da+ ber$ba+ se+ingga 4er$ di de4oy
$ang.
Setea+ ber+asi mea#$#an de4oy $ang) coba <aan#an agi
-reeterWeb!roject
Haaman 2eb yang di+ara4#an m$nc$ sebagai +aaman de&a$t.
'eti# nama di te9t &ied sebea+ #anan :ame.
'i# b$tton -reet dan teri+at greeting di+asi#an dari 2eb
services. Ini teri+at di bagian greeting%e9t"ied #arena button action
handler!
12*
Sean<$tnya i+at #ode 4ada button action handler. 'omentar 4ada
a#+ir baris mengingat#an tentang cara 2eb service da4at di<aan#an!
greeting.Greeting'er/ice %ort = ser/ice.getGreeting'er/ice@ort();
// Get access to ;e8 ser/ice
'tring name = ('tring) name2e?t"ield.get2e?t();
// Get the /alue in the name &ield
'tring greeting = %ort.greet(name);
// Use ;e8 ser/ice client to get the greeting &rom ;e8 ser/ice
greeting2e?t"ield.set2e?t(greeting);
// Insert the returned greeting into the te?t &ield
'ystem.out.%rintln(,esult = , 4 greeting);
// # de8ug statement to dum% a message to the Glass"ish log
5i#a mea#$#an #i# 4ada tab -lass9ish MB 4ada 4ane A$t4$t
4ane 4ada bagian ba2a+ <endea .et-eans) a#an teri+at +asi dari
statemen System.o$t.4rintn.
User inter&ace berbasis 2eb di<aan#an 4ada server berbasis
-reeter (A5A mengg$na#an berbagai ayers. Sean<$tnya a#an #e
bagian #ingkasan dan a#an direvie2 berbagai ayer terseb$t.
121
BAB "
Integrasi Basisdata
St$di #as$s 2 ini mengac$ 4ada 4eneitian ini Utomo et a 7200/8
yang ber$sa+a mengintegrasi#an basisdata <ara# <a$+ yang berada
di$ar 4er$sa+aan dengan basisdata o#a di daam 4er$sa+aan.
Integrasi basisdata dia#$#an dengan mea#$#an select tabe dari
server basisdata <ara# <a$+) #em$dian +asi dari select tabe terseb$t
diin4$t#an #e tabe yang s$da+ ada di server basisdata o#a. Integrasi
ini dia#$#an dengan mengg$na#an WS sebagai 4emb$ng#$s
7wrapped8 basisdata <ara# <a$+ ma$4$n o#a yang a#an diintegrasi#an.
WS terseb$t #em$dian dior#estrasi mengg$na#an -(;C dengan
mengg$na#an &rame2or# 5ava -$siness Integration. 7Ci+at ?ambar
6.18
&ambar /#1 6agan alir integrasi basis)ata *Utomo et al, !!8,
(ada 4eneitian ini basisdata <ara# <a$+ dib$ng#$s 7wrapped8
sebagai ayanan dengan mengg$na#an WSDC) demi#ian +anya
126
-$siness (rocess
;9ec$tion Cang$age
3ient
Sam4e D-
7>emote
Dat abase8
H=C "ie
7A$t4$t.H=C8
D-CA3:C 7Coca
Dat abase8
Seectname) emai
&rom3$stomer
name) emai
Writeto&ie
Insert emai) name
into;9tract3$stomer
reO$est
re4y
basisdata o#a <$ga dib$ng#$s sebagai ayanan0ayanan. WSDC ini
dig$na#an sebagai antarm$#a WS yang a#an dior#estrasi
mengg$na#an -(;C. (eneitian ini tea+ ber+asi mengambi data dari
server basisdata <ara# <a$+ dan dimas$##an #e basisdata o#a dengan
mengg$na#an -(;C 7Ci+at ?ambar 6.28.
&ambar /# Integrasi basis)ata menggunakan 6P$9
?ambar 6.2 mer$4a#an integrasi basisdata mea$i #om4osisi
WS mengg$na#an -(;C. Sem$a ti4e data yang die2at#an mea$i
-(;C mer$4a#an WSDC. (ada gambar terseb$t re(uest dib$at oe+
cient #e 5-I 3ontainer. #e(uest ini die2at#an mea$i .ormaiEed
=essage >o$ter #e -(;C Service ,ngine. -(;C Service ,ngine
126
#em$dian mea#$#an re(uest #e Database -3 mea$i .=>.
Database -3 mengembai#an 4esan #e "ie -3 agi mea$i .=>.
"ie -3 #em$dian memb$at re(uest #e Database -3 mea$i .=>.
:#+irnya 4esan die2at#an #e cient mea$i .=>. 'onse4 4enting
disini adaa+ .=> mer$4a#an +$b yang mea#$#an ro$ting 4esan
tida# +anya antara cient dengan $inding Component) teta4i <$ga
antar $inding Component yang berbeda.
:gar #om4osisi WS dengan -(;C da4at dide4oy #e server)
ma#a dibang$n :4i#asi 'om4osit dan menamba+#an a4i#asi -(;C
terseb$t sebagai mod$ 5-I. :4i#asi 'om4osit mer$4a#an bent$#
integrasi dan se#aig$s 4engembangan a4i#asi. %$<$an $tama
:4i#asi 'om4osit ini adaa+ menyedia#an #ontainer de4oyment
$nt$# berbagai <enis #om4onen 5-I. ?ambar 6.*) mer$4a#an
:4i#asi 'om4osit) yang terdiri dari tiga 4ane yait$ WSDC (orts dan
=od$ 5-I) serta Service Units. (ada gambar tam4a# ba+2a WSDC
4orts die#s4ose mea$i SA:( binding) "ie binding) dan Database
-inding.
127
&ambar /#" 3'likasi Kom'osit
Setea+ :4i#asi 'om4osit dide4oy #e server) ma#a da4at
dia#$#an 4eng$<ian dengan mengg$na#an 5$nit %est. (ada ?ambar
6.1) men$n<$##an ba+2a 4eng$<ian tea+ ber+asi.
&ambar /#. Hasil tes )engan ;unit Test
128
'eber+asian ini <$ga dit$n<$##an dengan adanya 4esan dari
SA:( response yang berasa dari a4i#asi SA:. (ada dire#tori o$t4$t
da4at ditem$#an ba+2a o$t4$t.9m tea+ terbent$# 7?ambar 6.68) dan
<i#a &ie ini dib$#a a#an tam4a# ba+2a terda4at data0data yang berasa
dari basisdata mea$i 4erinta+ seect dari seb$a+ tabe.
&ambar /#/ File 2ut'ut#=ml yang meru'akan (asil )ari select tabel
Seain it$ dari +asi testing <$ga di+asi#an data yang ber+asi di0
insert0#an #e basisdata o#a. Data terseb$t berasa dari basisdata
<ara# <a$+. 7?ambar 6.68
12/
&ambar /#4 (asil )ari select tabel yang )i<insert ke basis)ata lokal
Dengan demi#ian 4eneitian mengenai integrasi basisdata ini
da4at dig$na#an sebagai andasan $nt$# integrasi a4i#asi yang ain)
dengan mengg$na#an berbagai 4roto#o yang s$da+ disedia#an oe+
&rame2or# 5-I se4erti 4roto#o SA:() 5=S) "ie) dsb.
;ava $usiness "ntegration 75-I8 menyedia#an andasan bagi
integrasi berbasis SA:. 5-I ini menyedia#an integrasi &$ngsi bisnis
yang die#s4ose sebagai ayanan0ayanan) dan dengan intera#si yang
decoupled. 5-I menyedia#an d$#$ngan angs$ng bagi 4engembangan
:4i#asi 'om4osit mea$i me#anisme ;$" service assemblies) yang
mem$ng#in#an a4i#asi di#om4osisi secara angs$ng dari antarm$#a
berbasis ayanan dari s$at$ ;$" service unit.
1*0