41 BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1 IMPLEMENTASI LAYANAN BERBASIS WEB DENGAN JSON- RPC Bagian ini berisi tentang implementasi semua proses yang telah dijelaskan pada bab sebelumnya. Implementasi membutuhkan dua perangkat pendukung yaitu perangkat keras dan perangkat lunak. 4.1.1 Spesifikasi komputer server Perangkat keras yang di gunakan oleh aplikasi server adalah sebuah komputer dengan spesifikasi sebagai berikut : Prosesor : Intel Core2 @1,73GHz Layar : 15,4 XWGA Memori : 0,98 GB Harddisk : 80GB VGA : 256 MB 4.1.2 Spesifikasi komputer client Perangkat keras yang di gunakan oleh aplikasi client adalah sebuah komputer dengan spesifikasi sebagai berikut : Prosesor : Intel Core2 @1,73GHz Layar : 15,4 XWGA Memori : 0,98 GB Harddisk : 80GB VGA : 256 MB
42 4.1.3 Servlet/JSP container untuk aplikasi server Untuk menjalankan Servlet pada aplikasi server diperlukan sebuah Servlet/JSP container. Dalam penelitian ini, container yang akan di gunakan adalah Apache Tomcat versi 5.5. 4.1.4 Web server untuk aplikasi client Aplikasi website client akan akan di tempatkan dalam sebuah layanan berbasis web yaitu Apache HTTP web server versi 2.0. 4.1.5 Platform aplikasi client dan server Platform yang digunakan pada aplikasi client menggunakan bahasa pemrograman PHP, dengan JavaScript sebagai antarmuka antara aplikasi client dan aplikasi server. Sedangkan pada aplikasi server menggunakan platform Java dengan teknologi servlet sebagai antarmuka dengan aplikasi client. 4.1.6 Protokol Protokol yang digunakan untuk berkomunikasi antara aplikasi client dan aplikasi server menggunakan protokol HTTP. 4.1.7 Implementasi Aplikasi Client Bagian berikut akan menjelaskan tentang implementasi terhadap komponen di aplikasi client yaitu komponen Client APP dan komponen JSON- RPC JavaScript Layer, berdasarkan perancangan pada bab sebelumnya. 4.1.7.1 Implementasi Client APP Implementasi Client APP berupa suatu aplikasi berbasis web, menggunakan bahasa pemrograman PHP. Antarmukanya sebagai berikut :
43 1. Antarmuka Menu Utama Menu ini adalah halaman utama dari aplikasi web client. Pada menu ini terdapat dua pilihan menu yaitu informasi jadwal bioskop dan Polling. Ketika user melakukan pemilihan menu, misalnya informasi bioskop, maka pengguna akan dialihkan ke halaman informasi bioskop. Tampilannya dapat dilihat seperti pada gambar 4.1 dibawah ini : Gambar 4.1 Antarmuka Menu Utama Client APP 2. Antarmuka Menu Informasi Jadwal Bioskop Menu ini adalah menu yang berisi informasi jadwal bioskop yang sedang tayang pada hari ini, di bioskop Theater 21. Data nama bioskop yang di tampilkan pada dropdown listbox merupakan data yang di dapat melalui pemanggilan sub-rutin jarak jauh yang ada di aplikasi server. Ketika user melakukan klik terhadap tombol search, maka yang terjadi adalah aplikasi client akan melakukan pemanggilan sub-rutin yang ada di aplikasi server untuk menampilkan data-data film yang tayang hari ini di bioskop tertentu. Tampilannya dapat dilihat seperti pada gambar 4.2.
44 Gambar 4.2 Antarmuka Menu Informasi Jadwal Bioskop Client APP 3. Antarmuka Menu Polling Menu ini adalah menu untuk melakukan jajak pendapat terhadap jenis film yang banyak disukai orang. Pada menu ini pengguna dapat melakukan polling dan melihat hasilnya. Tampilan utama menu ini dapat dilihat pada gambar 4.3 berikut : Gambar 4.3 Antarmuka Menu Polling Client APP
45 Pengguna juga dapat melihat hasil polling yang datanya di dapat dari proses pemanggilan sub-rutin di server, seperti pada gambar 4.4 berikut : Gambar 4.4 Antarmuka Menu Hasil Polling Client APP 4.1.7.2 Implementasi JSON-RPC JavaScript Layer Implementasi untuk komponen ini adalah sebuah file Javascript yang akan di tempatkan di aplikasi client. Pada file Javascript ini terdapat sebuah kelas yaitu kelas JSONRpcClient, yang memiliki spesifikasi sub-rutin sebagai berikut : Tabel 4.1 Sub-rutin kelas JSONRpcClient /JSON-RPC JavaScript Layer No Nama Sub-rutin Kegunaan 1. JSONRpcClient(vurl,vuser,vpa ss) 2. JSONRpcClient.prototype.doL ogin = function() 3 JSONRpcClient.prototype.get DataFilm = function(id,namabioskop) Sub-rutin ini berguna untuk constructor sekaligus tempat inisialisasi awal terhadap parameter URL tempat server berada Sub-rutin ini berguna untuk melakukan login terhadap aplikasi server penyedia layanan berbasis web Sub-rutin ini berguna untuk menampilkan film-film yang sedang tayang hari ini di beberapa bioskop
46 Tabel 4.1 Sub-rutin kelas JSONRpcClient /JSON-RPC JavaScript Layer (lanjutan) No Nama Sub-rutin Kegunaan 4 JSONRpcClient.prototype.get DataBioskop = function(id) Sub-rutin ini berguna untuk menampilkan data bioskop yang ada 5 function GetXmlHttpObject() Sub-rutin ini berguna untuk Mendapatkan objek XmlHttpObject, yang nantinya akan digunakan untuk pengaksesan ke server penyedia layanan berbasis web melalui teknologi AJAX 6 JSONRpcClient.prototype.get HasilPooling = function(id) Sub-rutin ini berguna untuk menampilkan data hasil polling 7 JSONRpcClient.prototype.setP ooling = function(pilihan,id) Sub-rutin ini berguna untuk melakukan set pilihan terhadap polling film yang paling di gemari 8 function randomstring() Sub-rutin ini berguna untuk mendapatkan random String yang akan digunakan sebagai ID pada objek permintaan 4.1.8 Implementasi aplikasi server Implementasi aplikasi server akan menggunakan bahasa pemrograman Java. Yang akan dibahas disini adalah implementasi terhadap komponenkomponen seperti JSON-RPC Servlet, JSON-RPC Dispatcher, dan Object Handler, berdasarkan perancangan pada bab sebelumnya. 4.1.8.1 JSON-RPC Servlet Implementasi komponen JSON-RPC Servlet adalah berupa sebuah kelas bernama ServletJSONRPC yang merupakan kelas turunan dari kelas servlet (javax.servlet.http.httpservlet) yang ada di pustaka java. Kelas ini berfungsi sebagai penghubung antara aplikasi client dengan aplikasi server. Semua sub-rutin
47 yang ada pada kelas ini sama dengan kelas induknya (javax.servlet.http.httpservlet), dengan sebuah sub-rutin baru hasil implementasi ulang terhadap sub-rutin doget dan dopost. Detailnya dapat dilihat pada table berikut: Tabel 4.2 Sub-rutin kelas ServletJSONRPC (JSON-RPC Servlet) No Nama Sub-rutin Kegunaan 1. doget(httpservletreques t req, HttpServletResponse resp) 2 dopost(httpservletreque st req, HttpServletResponse resp) Sub-rutin ini akan dipanggil ketika sebuah objek permintaan dikirimkan oleh client melalui metode pengiriman GET Sub-rutin ini akan dipanggil ketika sebuah objek permintaan dikirimkan oleh client melalui metode pengiriman POST 4.1.8.2 JSON-RPC Dispatcher Implementasi komponen JSON-RPC Dispatcher adalah berupa sebuah class Java bernama Dispatcher. Class ini berfungsi sebagai penghubung JSON- RPC Servlet dengan Object handler. Semua Sub-rutin yang ada pada class ini dapat dilihat pada tabel berikut : Tabel 4.3 Sub-rutin kelas Dispatcher / JSON-RPC Dispatcher No Method Kegunaan 1. public void register(final NotificationHandler handler) 2 public String[] handledrequests() 3 public String[] handlednotifications() Sub-rutin ini berguna untuk meregistrasikan sebuah object handler berbasis JSON-RPC 2.0 Mendapatkan nama-nama object handler untuk menangani objek permintaan yang masuk yang terdaftar pada JSON-RPC Dispatcher mendapatkan nama-nama object handler untuk mengatasi objek notifikasi yang masuk yang terdaftar pada JSON-RPC Dispatcher
48 Tabel 4.3 Sub-rutin kelas Dispatcher / JSON-RPC Dispatcher (lanjutan) No Method Kegunaan 4 public RequestHandler getrequesthandler(final String requestname) 5 public NotificationHandler getnotificationhandler(final String notificationname) 6 public JSONRPC2Response dispatch(final JSONRPC2Request request, final MessageContext requestctx) 7 public void dispatch(final JSONRPC2Notification notification, final MessageContext notificationctx) Mendapatkan object handler terkait, berdasarkan objek permintaan yang dikirim oleh client Mendapatkan object handler terkait, berdasarkan objek notifikasi yang dikirim oleh client mengalihkan objek permintaan ke pada object handler yang sesuai untuk dilakukan pemrosesan lebih lanjut, dan akan mengembalikan sebuah objek balasan mengalihkan objek notifikasi ke pada object handler yang sesuai, untuk dilakukan pemrosesan lebih lanjut 4.1.8.3 Object Handler Implementasi komponen Object handler adalah berupa dua buah kelas Java bernama RequestHandler dan NotificationHandler. Class RequestHandler Tabel 4.4 Sub-rutin kelas RequestHandler (Object Handler Untuk Objek Permintaan) No Nama Sub-rutin Kegunaan 1. public String[] handledrequests() 2 public JSONRPC2Response process(jsonrpc2request req) Mendapatkan nama dari semua sub-rutin yang menangani semua objek permintaan Memproses objek permintaan yang masuk
49 Class NotificationHandler Tabel 4.5 Sub-rutin Kelas NotificationHandler (Object Handler Untuk Objek Notifikasi ) No Method Kegunaan 1. public String[] handlednotifications() Mendapatkan nama dari semua 2 Public process(jsonrpc2notification notification) sub-rutin yang menangani semua objek notifikasi Memproses objek notifikasi yang masuk 4.2 PENGUJIAN Pada bagian ini akan diuraikan hasil pengujian terhadap aplikasi website client seperti yang telah di implementasikan diatas, pengujian akan dilakukan pada aplikasi client, maupun aplikasi server. 4.2.1 Tujuan Pengujian Tujuan pengujian yang ingin di capai adalah sebagai berikut : 1. Memastikan komunikasi yang terjadi antara aplikasi client dan aplikasi server telah berjalan sesuai dengan spesifikasi pada JSON-RPC 2.0 2. Memastikan semua objek permintaan/objek notifikasi yang dikirimkan client memiliki objek balasanyang sesuai yang akan dikirimkan oleh server 3. Dapat dilakukan perbaikan-perbaikan jika saat proses pengujian terdapat kekurangan. 4.2.2 Rancangan Pengujian Rancangan pengujian yang akan dilakukan adalah sebagai berikut :
50 1. Pengujian terhadap aplikasi client, untuk memastikan bahwa komunikasi yang terjadi dengan server berjalan sesuai dengan perancangan 2. Pengujian terhadap aplikasi server, untuk memastikan objek balasan hasil keluaran dari server telah sesuai dengan jenis objek permintaan yang di masukan melalui browser client 4.2.3 Langkah Langkah Pengujian 1. Pengujian 1 dilakukan dengan cara melakukan akses langsung terhadap aplikasi website client dan melakukan pemilihan terhadap semua menu yang ada, kemudian melihat dampak yang terjadi di aplikasi server 2. Pengujian 2 dilakukan dengan cara melakukan akses langsung terhadap aplikasi client, melalui browser. Dengan memasukan beberapa jenis objek permintaan/ objek notifikasi, dan melihat dampak yang terjadi. Dalam pengujian ini juga di lakukan pengujian terhadap kasus objek balasan kesalahan 4.2.4 Hasil Pengujian Hasil pengujian terhadap langkah langkah yang telah dijelaskan di atas adalah sebagai berikut : 1. Hasil Pengujian 1 a. menu informasi jadwal bioskop Ketika menu ini pertama kali dipilih. Aplikasi client akan mengirimkan objek permintaan untuk mendapatkan daftar data bioskop yang akan dipakai untuk dropdown list box pilihan tempat bioskop, dan server akan memberi balasan berupa objek balasan seperti terlihat pada log di server berikut ini : com.theater21.servlet.servletjsonrpc - Get Objek permintaan : {"id":"hdcv1dnx","method":"getdatabioskop","params":[],"jsonrpc ":"2.0"}
51 com.theater21.servlet.servletjsonrpc - Send Objek balasan : {"id":"hdcv1dnx","result":["citos","grand Indonesia","Pejaten Village"],"jsonrpc":"2.0"} Ketika pengguna memilih salah satu nama bioskop,misalnya Grand Indonesia dan memilih tombol search, maka terjadi komunikasi sebagai berikut, seperti yang di tunjukan di file log aplikasi sebagai beikut : com.theater21.servlet.servletjsonrpc - Get Objek permintaan : {"id":"goznxl5r","method":"getdatafilm","params":{"nama_biosk op":"grand Indonesia"},"jsonrpc":"2.0"} com.theater21.servlet.servletjsonrpc - Send Objek balasan : {"id":"goznxl5r","result":[{"film":[{"judul_film":"triangle","jam_t ayang":"12:30 WIB,14:40 WIB,16:50 WIB,19:00 WIB,21:10 WIB"},{"judul_film":"The Gravedancers","jam_tayang":"12:45 WIB,14:55 WIB,17:05 WIB,19:15 WIB,21:25 WIB"},{"judul_film":"Big Stan","jam_tayang":"13:00 WIB,15:10 WIB,17:20 WIB,19:30 WIB,21:40 WIB"},{"judul_film":"After.Life","jam_tayang":"12:45 WIB,14:55 WIB,17:05 WIB,19:15 WIB,21:25 WIB"},{"judul_film":"The Warrior's Way","jam_tayang":"13:15 WIB,15:25 WIB,17:35 WIB,19:45 WIB,21:55 WIB"},{"judul_film":"Drive angry","jam_tayang":"12:30 WIB,14:40 WIB,16:50 WIB,19:00 WIB,21:10 WIB"}],"nama_bioskop":"Grand Indonesia"}],"jsonrpc":"2.0"} b. Menu Polling Ketika user memilih menu polling, maka pengguna dihadapkan pada dua pilihan yaitu tombol pilih dan hasil. Ketika pengguna memilih tombol pilih, sebenarnya yang terjadi adalah aplikasi client akan membuat sebuah objek notifikasi terhadap server untuk memasukan data pilihan user ke server, aplikasi client mengirim sebuah objek notifikasi karena aplikasi tidak memerlukan objek balasan dari server. komunikasi yang terjadi adalah sebagai berikut, seperti yang di tunjukan di log aplikasi server sebagai beikut :
52 com.theater21.servlet.servletjsonrpc - Get Objek notifikasi : {"method":"poolingfilm","params":["indonesia"],"jsonrpc":"2.0"} Ketika pengguna memilih tombol hasil, pengguna akan di perlihatkan hasil jajak pendapatnya, data hasil jajak pendapat di peroleh dari hasil pengiriman objek permintaan oleh client ke aplikasi server. Komunikasi yang terjadi adalah sebagai berikut, seperti yang di tunjukan di log aplikasi server sebagai beikut : com.theater21.servlet.servletjsonrpc - Get Objek permintaan : {"id":"hi5l4hko","method":"gethasilpooling","params":["barat"],"j sonrpc":"2.0"} com.theater21.servlet.servletjsonrpc - Send Objek balasan : {"id":"hi5l4hko","result":{"barat":0,"indonesia":1},"jsonrpc":"2.0"} 2. Hasil Pengujian 2 Hasil akses langsung terhadap aplikasi server melalui browser dapat dilihat pada tabel berikut : Tabel 4.6 Hasil Pengujian Aplikasi Server Melalui Browser Objek permintaan Objek balasan Keterangan {"id":"hdcv1dnx","met hod":"getdatabioskop","p arams":[],"jsonrpc":"2.0"} {"method":"poolingfilm", "params":["indonesia"],"js onrpc":"2.0"} {"id":"hdcv1dnx","res ult":["citos","grand Indonesia","Pejaten Village"],"jsonrpc":"2.0" } - Tidak ada objek balasan karena berupa objek notifikasi {"id":"hdcv1dnx","met hod":"getartis","params": [],"jsonrpc":"2.0"} {"id":"hdcv1dnx","err or":{"message":"method not found","code":- 32601},"jsonrpc":"2.0"} Karena sub-rutin yang dimasud tidak terdaftar
53 4.2.5 Analisis hasil pengujian Hasil pengujian terhadap langkah langkah yang telah dijelaskan di atas adalah sebagai berikut : 1. Hasil pengujian 1 menunjukan bahwa komunikasi berjalan sesuai harapan, dan data yang ditampilkan sesuai dengan data yang diperoleh dari server. 2. Hasil pengujian 2 menunjukan bahwa objek balasan di berikan oleh server sudah sesuai, dan juga sudah mendukung penggunakan objek balasan kesalahan