BAB 6 Membangun User Interface -...
Transcript of BAB 6 Membangun User Interface -...
BAB 6Membangun User Interface
Pada proyek terakhir, telah dibangun modul BPEL untuk mengorkestrasi
dua web services. Pada saat pengujian digunakan, fasilitas test built-in yang ada
pada aplikasi komposit. Pada proyek ini, akan dibuat user interface berbasis
web untuk berkomunikasi dengan proses BPEL.
6.1 Membuat Proyek Aplikasi Web Pilih File / New Project dari menu bar. Window New Project akan
muncul.
Pilih Java Web sebagai category dan Web Application untuk project type.
Kemudian klik Next.
Untuk Project Name, ketik LoanQuoteUI dan klik Next. {Jika langsung
klik Finish (bukan Next) maka framework interface web tidak ditambahkan
secara otomatis.}
Pada langkah Server and Settings, klik Next (bukan Finish! ).
Pada bagian “Visual Web JavaServer Faces” lakukan cek pada box.
Kemudian pilih Finish. {User interface aplikasi Java atau JavaFX Script dapat
digunakan, keduanya didukung oleh NetBeans.}
132
Proyek LoanQuoteUI akan tampak pada panel Projects. Perhatikan
bahwa kanvas design Page1.jsp tampak dengan widget palette. Jika palette
tidak tampak maka klik-kanan window, gunakan opsi menu bar Window /
Palette untuk memunculkan. {Pada proyek ini akan dibangun menggunakan
JSP (JavaServer Pages) dan JSF (JavaServer Faces) untuk user interface. }
Drag empat Labels dan satu Button dari palette dan drop ke kanvas
Page1.jsp:
Untuk merubah default pada label text, lakukan klik-double dan
ketikkan teks yang diinginkan.
Tambahkan tiga Text Fields ke layout di sebelah kanan label.
{Untuk meluruskan teks, klik semua label, kemudian klik-kanan dan gunakan opsi Align. Coba juga gunakan opsi Align / Snap to Grid.}
Gunakan opsi menu bar Window / Properties untuk menampilkan panel
Properties. Ubah id property dari tiga text fields menjadi :133
• typeTextField
• amountTextField
• periodTextField{Ubah nilai id supaya lebih deskriptif dan mudah dalam
pemeliharaan.}
Tambahkan sebuah Label dengan id adalah paymentLabel di sebelah
kanan label “Calculated Monthly Payment:”.
Beri nama button menjadi Calculate deengan merubah pada text
property pada panel Properties.
Pada tiga data entry textField dan pada label yang menampilkan jumlah
pembayaran lakukan, add “binding attribute” dengan klik pada tiap widgets
(typeTextField, amountTextField, periodTextField dan paymentLabel) dan
memilih opsi seperti dibawah ini.
134
Simpan semua pekerjaan dengan klik Save All.
Klik pada kontrol JSP pada bagian panel layout
untuk melihat sintaks JSP yang secara otomatis
dibuat didasarkan pada widget yang ditambahkan pada kanvas design. Aksi
“Add Binding Attribute” telah ditambahkan pada sintaks yang disorot berikut
ini.
135
Perhatikan bahwa statement binding mengacu pada Page1. Klik pada
kontrol Java pada bagian atas panel layout untuk melihat “backing bean” dari
kode Java untuk kelas Page1. Hubungan antara sintaks JSP dan Java backing
bean telah dijelaskan oleh spesifikasi JSF.
Klik pada kontrol Design untuk kembali ke mode Design.
6.2 Membuat Web Service ClientKomponen JSF membawa kemampuan dari Java Swing berbasis desktop
ke perancangan web UI. Komponen semacam button mempunyai action
handlers yang berisi kode yang dieksekusi ketika user berinteraksi dengan
136
komponen JSF. Kode JSP pada sisi klien untuk melakukan invoke ke kdoe
action handler yang berjalan di dalam web container (server- side).
Klien web adalah kode JAX-WS yang dihasilkan untuk melapisi dengan
Java / XML marshaling dan unmarshaling yang berkomunikasi antara klien
(service consumer) dan server (service provider).
Selanjutnya diperlukan penetapan action handler untuk tombol Calculate
sehingga dapat melakukan invoke ke proses bisnis QuoteLoan dan
mendapatkan return pembayaran bulanan pada field paymentLabel.
Proses bisnis QuoteLoan tersedia sebagai Web service. Karena itu
diperlukan beberapa kode sisi klien untuk memanggil web service. Sehingga
akan dibuat klien web service.
NetBeans dapat dengan mudah membuat kode sisi klien untuk
memanggil proses bisnis QuoteLoan sebagai web service. Hanya perlu tahu
dimana endpoint web services berada. Dengan kata lain, bagaimana proses
BPEL “mendengarkan” request SOAP/HTTP?
Untuk menjawabnya, dengan melihat LoanQuoteWSDL yang dibuat
untuk melakukan “wrap” proses BPEL sehingga dapat dipanggil via SOAP?
WSDL ini dapat berjalan karena telah ditest melalui HomeLoanTestCase.
Kemudian, klik-double pada LoanQuoteWSDL.wsdl pada Process Files
untuk QuoteLoan sehingga dapat dilihat endpoint address:
137
Lihat gambar diatas bahwa soap:address ditetapkan sebagai :
http://localhost:${HttpDefaultPort}/LoanQuoteWSDLService/LoanQuoteWSDLPort
6.3 Menemukan Port JBI Binding Component Perhatikan bahwa walaupun mengacu pada port tertentu, WSDL masih
menggunakan environment variable (${HttpDefaultPort}) yang dibuat Netbeans
secara otomatis. LoanQuoteUI merupakan aplikasi web stand-alone dan bukan
bagian dari aplikasi komposit. Sehingga, LoanQuoteUI won't mengambil
manfaat dari substitusi variabel lingkungan. Karena itu hanya perlu dijawab
pertanyaan : Apa port aktual tempat endpoint “mendengarkan” ?
Untuk menjawab pertanyaan tersebut, maka akan ditanyakan pertanyaan
lainnya. Dimana kontainer JBI yang mendeploy endpoint SOAP? Jika
diketahui nomor port untuk komponen JBI yang menjadi tumpangan endpoint,
maka akan diketahui nomor port aktual untuk mengantikan $
{HttpDefaultPort}.
Klik-double Service Assembly pada QuoteLoanApplication untuk
menampilkan service assembly pada CASA Editor:
138
Endpoint direpresentasikan oleh port SOAP WSDL yang dilabeli
LoanQuoteWSDLPort. Klik-kanan pada port ini dan pilih Properties:
139
Dapat dilihat dalam property Component Name bahwa port WSDL port
(SOAP endpoint) dideploy pada sun-http-binding JBI component. Komponen
binding HTTP merupakan salah satu dari lebih 40 komponen JBI dalam
proyek Open ESB.
Setelah diketahui port dari komponen sun-http-binding maka akan
diketahui nomor port untuk endpoint web services untuk memanggil proses
QuoteLoan.
140
Untuk menemukan port sun-http-binding component maka pindah ke
panel Services dan akses Properties nya:
Perhatikan bahwa Default HTTP Port Number adalah 9080.
Sehingga untuk mengakses endpoint SOAP web service:
http://localhost:${HttpDefaultPort}/LoanQuoteWSDLService/LoanQuoteWSDLPort
digunakan URL:
http://localhost:9080/LoanQuoteWSDLService/LoanQuoteWSDLPort
141
Tambahkan ?wsdl pada bagian akhir the URL dan gunakan web browser
untuk melihat endpoints WSDL:
http://localhost:9080/LoanQuoteWSDLService/LoanQuoteWSDLPort?wsdl
Akan terlihat dokumen WSDL yang memverifikasi bahwa endpoint ke
QuoteLoan adalah port 9080:
142
Dengan URL dari endpoint WSDL endpoint, maka akan siap dibangun
klien web service.
Pada panel Projects, klik-kanan pada proyek LoanQuoteUI dan pilih opsi
New / Other / Web Services / Web Service Client. Klik Next untuk memulai
wizard.
Klik radio button WSDL URL. Kemudian paste dalam URL untuk
WSDL yang akan ditampilkan:
http://localhost:9080/LoanQuoteWSDLService/LoanQuoteWSDLPort?wsdl
Klik Finish untuk mulai membuat sisi klien
WSDL diakses dan klien Web service muncul pada proyek dibawah Web
Service References:
143
{Perhatikan bahwa web service reference tidak dapat diklik-double. Yang dikerjakan NetBeans adalah mengumpulkan yang diperlukan untuk menghasilkan kode sisi klien JAX-WS untuk melakukan marshal dan unmarshal XML dan Java object.
NetBeans memudahkan dalam menggunakan kode sisi klien tanpa kawatir cara melakukan marshaling dan unmarshaling.}
Akhirnya telah berhasil dibuat kode button handler yang menggunakan
klien Web service.
Pada mode Design Page1.jsp, klik-doublepada tombol Calculate untuk
menampilkan kode untuk handler yang masih kosong:
Akan ditambahkan beberapa kode untuk memproses klien web service
yang baru saja dibuat.
Klik pada bagian kode setelah komentar. Tekan Enter untuk membuat
baris kosong.
144
Pada baris kosong, klik-kanan dan pilih Web Service Client Resources /
Call Web Service Operation. Pada window pop-up pilih
LoanQuoteWSDLOperation dan pilih OK.
{Web Service Client Resources merupakan opsi terakhir dalam menu pop-up.}
Kode klien untuk mengakses proses QuoteLoan BPEL sebagai web
service per interface WSDL akan ditambahkan pada button handler:
Ini akan memberikan kerangka kode yang memungkinkan button handler
untuk menangani proses QuoteLoan BPEL melalui panggilan web services.
Sekarang perlu diketikkan rincian kodenya.
Ganti keseluruhan button handler dengan mengkopi-paste statemen
berikut ini sehingga kode pada button handler akan tampak seperti ini:
public String button1_action() {try {
145
// Get portorg.netbeans.j2ee.wsdl.quoteloan.loanquotewsdl.LoanQuoteWSDLPortType port =service.getLoanQuoteWSDLPort();// Retrieve values in text fields on UIString loanType = (String) typeTextField.getText();String amountString = (String) amountTextField.getText();String periodString = (String) periodTextField.getText();double amount = Double.valueOf(amountString);int period = Integer.valueOf(periodString);org.netbeans.xml.schema.loanquoteschema.LoanQuoteInput inputPart =new org.netbeans.xml.schema.loanquoteschema.LoanQuoteInput();// Populate inputs inputPart.setLoanType(loanType); inputPart.setAmount(amount);
inputPart.setPeriod(period);// Call web service org.netbeans.xml.schema.loanquoteschema.LoanQuoteOutput
result = port.loanQuoteWSDLOperation(inputPart);System.out.println("Result = " + result);// Update UI with web service resultdouble monthlyPayment = result.getMonthlyPayment();String monthlyPaymentString = String.valueOf(monthlyPayment);paymentLabel.setValue(monthlyPaymentString);} catch (Exception ex) {paymentLabel.setValue("Error");System.out.println("****** " + ex.getMessage());System.out.println("****** " + ex.getCause());}return null;}
{Statemen yang di-bold menunjukkan langkah-langkah sbb : 1. Membangun channel komunikasi2. Mendapatkan data yang dimasukkan melalui field
user interface 3. Bangun data structure yang digunakan komunikasi
melalui channel4. Panggil Web service provider melaluii channel5. Bangun user interface widget dengan hasil dari
Web service call}
Gunakan reformat Alt-Shift-F to untuk merapikan Java code.
Lakukan Save All.
146
6.4 Deploying ProyekLakukan build proyek dengan klik-kanan pada node LoanQuoteUI dan
pilih Clean and Build.
{Untuk melakukan deploy aplikasi web, gunakan cara yang sudah dilakukan (klik- kanan dan pilih opsi Deploy).}
Kemudian akan dilakukan deploy aplikasi web sehingga dapat dilakukan
test. Untuk deployment sebelumnya, lakukan klik-kanan dan pilih opsi Deploy.
Sementari itu, pindah ke GlassFish Admin Console. Hal ini akan memberi
kesempatan untuk melihat integrasi antara NetBeans IDE dan GlassFish
Enterprise Server.
Pastikan server GlassFish telah aktif.
Untuk memulai deployment, pindah ke panel Services dan invoke
GlassFish Admin Console dengan klik-kanan GlassFish V2 dan pilih opsi View
Admin Console:
147
Akan muncul halaman web yang memerlukan otentifikasi.
Untuk User Name, ketik: admin
Untuk Password, ketik: adminadmin
Aplikasi LoanQuoteUI merupakan sebuah aplikasi web, sehingga
dibawah hirarki aplikasi pada sisi kiri, klik pada node Web Applications.
Perhatikan bawha CalculateLoanPayment adalah aplikasi web yang telah
dideploy.
148
Untuk mendeploy aplikasi LoanQuoteUI, klik pada tombol Deploy.
Display Deploy Enterprise Applications/ Modules akan muncul.
Pada field Location lakukan browse ke direktori
C:\MyTutorial\LoanQuoteUI\dist dan pilih file LoanQuoteUI.war:
Klik pada tombol OK untuk mendeploy file.war. Setelah deployment
berakhir, maka daftar aplikasi web yang dideploy akan muncul:
149
Aplikasi LoanQuoteUI telah siap dilakukan testing.
6.5 Testing User Interface Selanjutnya akan digunakan aplikasi web LoanQuoteUI untuk menguji
proses QuoteLoan BPEL.
Klik-kanan pada node LoanQuoteUI dan pilih Run. Sebuah halaman
web akan muncul yang menampilkan interface yang telah didesain.
Ketikkan data pinjaman pada tiga text box, seperti dibawah dan pilih
tombol Calculate:
150
Setelah menekan tombol Calculate jumlah pembayaran harusnya
tampak pada text box Calculated Monthly Payment seperti gambar diatas.
Jika muncul “Error” maka cek pada panel output GlassFish V2 untuk
pesan error.
{ Ingat bahwa nilai Loan Type adalah case-sensitive sehingga “AUTO” dan “auto” tidak sama. Ingat pula, tidak seperti halaman testing web service, Amount tidak mempunyai desimal.}
151