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
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 :
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.
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 :
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)
Sub-rutin ini berguna untuk constructor sekaligus tempat inisialisasi awal terhadap parameter URL tempat server berada 2. JSONRpcClient.prototype.doL
ogin = function()
Sub-rutin ini berguna untuk melakukan login terhadap aplikasi server penyedia layanan berbasis web
3 JSONRpcClient.prototype.get DataFilm =
function(id,namaBioskop)
Sub-rutin ini berguna untuk menampilkan film-film yang sedang tayang hari ini di beberapa bioskop
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 komponen-komponen 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
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)
Sub-rutin ini akan dipanggil ketika sebuah objek permintaan dikirimkan oleh client melalui metode pengiriman “GET”
2 doPost(HttpServletReque st req,
HttpServletResponse resp)
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)
Sub-rutin ini berguna untuk meregistrasikan sebuah object handler berbasis JSON-RPC 2.0
2 public String[] handledRequests()
Mendapatkan nama-nama object handler untuk menangani objek permintaan yang masuk yang terdaftar pada JSON-RPC Dispatcher
3 public String[]
handledNotifications()
mendapatkan nama-nama object handler untuk mengatasi objek notifikasi yang masuk yang terdaftar pada JSON-RPC Dispatcher
Tabel 4.3 Sub-rutin kelas Dispatcher / JSON-RPC Dispatcher (lanjutan)
No Method Kegunaan
4 public RequestHandler
getRequestHandler(final String requestName)
Mendapatkan object handler
terkait, berdasarkan objek permintaan yang dikirim oleh client 5 public NotificationHandler
getNotificationHandler(final String notificationName)
Mendapatkan object handler
terkait, berdasarkan objek notifikasi yang dikirim oleh client 6 public JSONRPC2Response
dispatch(final JSONRPC2Request request, final MessageContext requestCtx)
mengalihkan objek permintaan ke pada object handler yang sesuai untuk dilakukan pemrosesan lebih lanjut, dan akan mengembalikan sebuah objek balasan
7 public void dispatch(final
JSONRPC2Notification notification, final MessageContext
notificationCtx)
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()
Mendapatkan nama dari semua sub-rutin yang menangani semua objek permintaan 2 public JSONRPC2Response
process(JSONRPC2Request req)
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 sub-rutin yang menangani semua objek notifikasi
2 Public process(JSONRPC2Notification notification)
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
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"}
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
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"} {"id":"hDCV1dNX","res ult":["Citos","Grand Indonesia","Pejaten Village"],"jsonrpc":"2.0" } {"method":"poolingFilm", "params":["indonesia"],"js onrpc":"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
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