Membuat Web Service Client Menemukan Port JBI Binding Component

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 Client

Komponen 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 SOAPHTTP? 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}LoanQuoteWSDLServiceLoanQuoteWSDLPort

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 wont 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}LoanQuoteWSDLServiceLoanQuoteWSDLPort digunakan URL: http:localhost:9080LoanQuoteWSDLServiceLoanQuoteWSDLPort 141 Tambahkan ?wsdl pada bagian akhir the URL dan gunakan web browser untuk melihat endpoints WSDL: http:localhost:9080LoanQuoteWSDLServiceLoanQuoteWSDLPort ?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:9080LoanQuoteWSDLServiceLoanQuoteWSDLPort?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 port org.netbeans.j2ee.wsdl.quoteloan.loanquotewsdl.LoanQuoteWSDLPortType port = service.getLoanQuoteWSDLPort; Retrieve values in text fields on UI String loanType = String typeTextField.getText; String amountString = String amountTextField.getText; String periodString = String periodTextField.getText; double amount = Double.valueOfamountString; int period = Integer.valueOfperiodString; org.netbeans.xml.schema.loanquoteschema.LoanQuoteInput inputPart = new org.netbeans.xml.schema.loanquoteschema.LoanQuoteInput; Populate inputs inputPart.setLoanTypeloanType; inputPart.setAmountamount; inputPart.setPeriodperiod; Call web service org.netbeans.xml.schema.loanquoteschema.LoanQuoteOutput result = port.loanQuoteWSDLOperationinputPart; System.out.printlnResult = + result; Update UI with web service result double monthlyPayment = result.getMonthlyPayment; String monthlyPaymentString = String.valueOfmonthlyPayment; paymentLabel.setValuemonthlyPaymentString; } catch Exception ex { paymentLabel.setValueError; System.out.println + ex.getMessage; System.out.println + ex.getCause; } return null; } {Statemen yang di-bold menunjukkan langkah-langkah sbb : 1. Membangun channel komunikasi 2. Mendapatkan data yang dimasukkan melalui field user interface 3. Bangun data structure yang digunakan komunikasi melalui channel 4. Panggil Web service provider melaluii channel 5. 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 Proyek