Berdasarkan beberapa sumber, untuk mengembangkan Web API dengan Java, ada beberapa pilihan framework seperti RESTlet, Grails atau Jersey. Setelah ditimbang-timbang, saya putuskan untuk mencoba dulu menggunakan Jersey, karena RESTlet dibilang bloated (padahal seharusnya lightweight) dan Grails dibilang buggy (tapi ada yg berpendapat bahwa layer yang dibawahnya yang buggy).
1. Installasi Application Server GlassFish
- Download GlassFish server 3.1.1 dari http://download.java.net/glassfish/3.1.1/release/glassfish-3.1.1-windows.exe. Tentunya dependency-nya harus dipenuhi, yaitu JDK dan Ant (optional)
- Double click
- Installation type, pilih Typical installation
- Pilih install directory, saya letakkan di D:\glassfish3. Masukkan alamat proxy jika jaringan Anda menggunakan Proxy. Tanpa melakukannya, installasi UpdateTool akan gagal.
- Install dan enable Update Tool untuk mendapatkan informasi jika ada update untuk GlassFish
- Tekan tombol Allow access jika muncul Windows Security Alert, ini untuk mengijinkan Java terhubung ke jaringan Anda
- GlassFish akan di install dan di akhir installasi, installer akan menyalakan server GlassFish
- Cek hasil installasi dengan membuka http://<ip-anda-atau-gunakan-localhost>:8080/ melalui browser
- Untuk mencoba Admin Console, buka browser ke alamat yang sama dengan port 4848, http://<ip-anda-atau-gunakan-localhost>:4848/. Pertama-tama, GlassFish akan menghidupkan service ini terlebih dahulu.
- Sampai tahap ini, installasi sudah selesai. Saya sudah mendapatkan Jersey yang di bundle ke dalam GlassFish 3.1.
2. Konfigurasi Eclipse WTE untuk menggunakan GlassFish
Sampai di sini GlassFish dan Jersey sudah kita dapatkan.
Berikutnya, kita akan mempersiapkan Eclipse WTP sebagai IDE kita.
Berikut ini langkah-langkah yang dibutuhkan:
- Download Eclipse WTP
- Ekstrak
- Jalankan Eclipse
- Pilih menu Window | Preferences
- Dalam dialog Preferences pilih Server (di sebelah kiri) | Runtime Environments
- Tekan tombol Add
- Perhatikan bahwa Anda tidak mendapati GlassFish di dalam pilihan
- Klik link Download additional server adapters
- Pilih Oracle GlassFish Server Tools
- Restart jika sudah selesai
- Pilih menu Window | Preferences
- Pilih Server | Runtime Environments
- Tekan tombol Add, perhatikan bahwa sekarang Anda sudah mendapatkan GlassFish
- Pilih GlassFish Server Open Source Edition (JavaEE 6)
- Dalam dialog New Server Runtime Environment pilih Application Server Directory, ini adalah direktori di mana Anda menginstall GlassFish. Dalam kasus saya adalah D:/glassfish3/glassfish
3. Membuat Profile Server
Selesai. Sampai tahap ini Eclipse WTP Anda sudah terintegrasi
dengan server GlassFish. Saat ini, jika Anda mulai bersama saya, maka
Anda belum memiliki profile server. Berikutnya kita akan membuat profile
server.
- Window | Show View | Servers
- Klik kanan, pilih New | Server
- Pilih GlassFish Server Open Source Edition (JavaEE 6)
- Masukkan server’s host name. By default ini akan menunjukkan localhost. Gunakan setting ini. Menggunakan IP address atau nama komputer akan menyebabkan error karena Anda dianggap mengakses komputer lain secara remote. Password default untuk account admin adalah adminadmin. Jika Anda mengalami error, itu kemungkinan karena Anda menggunakan Runtime JRE ketika menghubungkan Eclipse ke Server. GlassFish membutuhkan JDK. Untuk mengatasinya cukup buka Window | Preferences. Pilih Java | Installed JREs. Tambahkan direktori JDK. Masih di Preferences, pilih Server | Runtime Environments. Pilih nama server yang kita buat tadi, tekan tombol Edit. Ubah JRE menjadi JDK (yang baru kita tambahkan).
- Jika profile sercer sudah terbentuk, Anda bisa klik kanan kemudian pilih Start
4. Membuat Servlet Sederhana
Kita akan men-test hasil instalasi ini. Saya akan buat sebuah servlet sederhana.
- File | New | Other
- Pilih Web | Dynamic Web Project
- Beri nama proyek baru tersebut com.durianapp.helloservlet.
- Perhatikan Target Runtime-nya. Harus GlassFish Server Open Source Edition. Saya gunakan Dynamic web module version 3.0.
- Tekan tombol Finish
- Pilih project yang kita buat tadi, lalu buat package baru, File | New | Package. Beri nama com.durianapp.helloservlet.dao.
- Buat class Java baru di dalam package tersebut, beri nama FileDao.
Isi class tersebut seperti berikut:
package com.durianapp.helloservlet.dao;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class FileDao {public int getCount() {int count = 0;FileReader fr = null;BufferedReader br = null;PrintWriter writer = null;try {File f = new File("FileCounter.initial");if (!f.exists()) {f.createNewFile();writer = new PrintWriter(new FileWriter(f));writer.print(0);}if (writer != null) writer.close();fr = new FileReader(f);br = new BufferedReader(fr);String initial = br.readLine();count = Integer.parseInt(initial);} catch (Exception e) {if (writer != null) writer.close();}if (br != null) {try {br.close();} catch (Exception e) {}}return count;}public void save(int count) throws IOException {FileWriter fw = null;PrintWriter pw = null;fw = new FileWriter("FileCounter.initial");pw = new PrintWriter(fw);pw.print(count);if (pw != null) pw.close();}} - Klik WebContent, klik kanan dan buat servlet baru File | New |
Other. Pilih Web | Servlet. Gunakan package name
com.durianapp.helloservlet. Berikan nama FileCounter.
package com.durianapp.helloservlet.servlets;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.durianapp.helloservlet.dao.FileDao;/*** Servlet implementation class FileCounter*/@WebServlet("/FileCounter")public class FileCounter extends HttpServlet {private static final long serialVersionUID = 1L;private int count;private FileDao dao;public void init() throws ServletException {dao = new FileDao();try {count = dao.getCount();} catch (Exception e) {// TODO: handle exceptiongetServletContext().log("Ada problem di FileCounter", e);throw new ServletException("Ada problem di FileCounter. "+e.getMessage());}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {HttpSession session = request.getSession(true);session.setMaxInactiveInterval(5);response.setContentType("text/plain");PrintWriter out = response.getWriter();if (session.isNew()) count++;out.println("Halaman ini sudah dibuka "+count+" kali.");}public void destroy() {super.destroy();try {dao.save(count);} catch (Exception e) {e.printStackTrace();}}} - Klik kanan nama project | Run As | Run on Server. Ini akan memastikan server running emudian membuka browser di dalam Eclipse. Jika browser gagal memunculkan halaman yang diminta (misalnya karena ada proxy, Anda bisa ubah localhost menjadi IP address)
Sampai tahap ini, jika semua baik-baik saja maka server dan Eclipse kita sudah siap untuk membangun Web API.