• Tidak ada hasil yang ditemukan

Pengenalan Java EE dengan Wildfly

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pengenalan Java EE dengan Wildfly"

Copied!
26
0
0

Teks penuh

(1)

Pengenalan Java EE dengan Wildfly

Disusun oleh:

Iwan Agus Fatahi

(2)

Daftar Isi

Pendahuluan... 4

Latar belakang...4

Tools dan aplikasi yang digunakan...5

Java JDK... 5

Eclipse... 5

Wildfly...6

Modul Wildfly...6

Mengenal J2EE (Java 2 Platform Enterprise Edition)...7

Infrastruktur Teknologi J2EE...7

Teknologi Servlet...7

Teknologi EJB (Enterprise Java Bean)...8

Teknologi JPA (Java Persistence API)...8

Teknologi JMS (Java Messaging Service)...8

JBoss AS 7...8

Instalasi...8

Eksekusi... 9

Administrasi...9

Aplikasi Multitier dengan Java... 10

Presentation-tier...11

Implementasi dengan Java...11

Application-tier...11

Implementasi dengan Java...11

Data-tier...11

Implementasi dengan Java...12

Web Dinamis dan Servlet... 13

Struktur aplikasi web dengan Java...13

Struktur direktori...13

web.xml...14

Servlet... 14

Pengiriman data dari form HTML...14

Contoh kode servlet...15

Aplikasi Client dengan Java...16

Client dengan metode GET...16

Client dengan metode POST...16

EJB (Enterprise Java Beans)... 18

Modularitas EJB...18

Interface...19

Implementasi...19

Implementasi EJB dengan Java dan Jboss AS 7...19

Interface...19

Implementasi...20

Akses (dari Servlet)...20

Layering dengan EJB...20

JPA (Java Persistence API)... 22

Beberapa keuntungan JPA...22

(3)

Menggunakan anotasi untuk mempersingkat penulisan...22

Menggunakan relasi-relasi yang ada dalam teori graph...23

Contoh Entity dengan JPA...23

Entity dengan ORM...23

Test... 23

JMS (Java Messaging Service)...24

Membuat JMS...24

Mendefiniskan Destination pada Wildfly...24

Membuat sebuah service JMS...24

Membuat client JMS...24

EAR (Enterprise Archive)... 25

(4)

Pendahuluan

Buku ini akan membahas tentang Java 2 Platform Enterprise Edition (J2EE) sebuah sebuah platform standard yang banyak digunakan oleh aplikasi-aplikasi modern. Secara definisi J2EE adalah sebuah ekosistem aplikasi yang berbasis Java dengan beberapa teknologi referensi terstandardisasi dan memiliki kemampuan untuk berjalan di segala sistem operasi. J2EE tidak hanya berfungsi untuk membuat aplikasi, tetapi juga menyediakan ekosistem (library) untuk menjalankan aplikasi tersebut. Dan secara khusus J2EE menyediakan dukungan yang baik untuk aplikasi berbasis web.

Singkat kata J2EE adalah teknologi yang terdiri dari kumpulan servis, API serta protokol yang memungkinkan terwujudnya sebuah aplikasi dengan struktur multi tier. Selain poin-poin tersebut J2EE juga mengatur spesifikasi bagaimana mengkoordinasi item-item tersebut, sehingga aplikasi bisa mengakses library yang dibutuhkan tanpa harus menambahkan library tersebut secara langsung ke dalam program buatan kita. Contoh diagram di bawah ini menggambarkan posisi J2EE terhadap aplikasi yang kita bangun.

Untuk mendukung anda dalam memahami isi buku dengan lebih mudah, maka dalam edisi ini kami sediakan juga beberapa link terhadap program utama yang diperlukan untuk membangun ekosistem J2EE dan tools untuk pengembangan aplikasinya. Beberapa aplikasi contoh juga kami sertakan yang akan menyesuaikan dengan pokok bahasan masing-masing. Program-program itu antara lain: Oracle Java (www.oracle.com), Wildfly (www.wildfly.org), serta Eclipse (www.eclipse.org).

Latar belakang

J2EE saat ini boleh dibilang sebagai sebuah platform aplikasi yang paling banyak digunakan

Drawing 1: Model pemrograman dalam sebuah "application server"

Client

My Application

J2EE Application Server

(Libraries, Protocol, API)

My Module

Browser

Others

My API

(5)

untuk membuat dan menjalankan aplikasi bisnis berbasis web di dunia. Hampir semua aplikasi semisal ERP, CRM, Core Banking yang digunakan oleh perusahaan-perusahaan besar menggunakan platform J2EE. Sehingga sangat wajar apabila tenaga-tenaga ahli yang menguasai J2EE menjadi programmer yang paling dicari saat ini. Meskipun demikan tetap saja programmer yang menguasai teknologi J2EE masih sangat langka terutama di Indonesia. Dengan latar belakang seperti ini diharapkan buku ini bisa membantu pembaca untuk menjadi pengisi kelangkaan ini, dan bisa menjadi inspirasi untuk ikut terjun dalam dunia J2EE.

Salah satu hambatan besar untuk belajar sistem seperti J2EE yang dirasakan penulis saat ini adalah kebiasaan programmer di Indonesia yang “senang” dengan proses-proses programming dengan menggunakan tools RAD (Rapid Application Development) seperti Visual Basic, Delphi dan sejenisnya. Kebiasaan ini menjadikan para pembuat aplikasi tidak terbiasa berpikir secara sistematis dalam kerangka programming yang lebih besar. Dalam tulisan ini penulis ingin mengajak pembaca untuk mencoba membangun kerangka pemrograman yang lebih besar, terstruktur dan mengikuti standar kelas enterprise.

Tools dan aplikasi yang digunakan

Tools yang akan digunakan dalam buku ini semuanya merupakan aplikasi free dan bahkan beberapa merupakan produk open source yang bisa diunduh dari internet. Harapannya dengan menggunakan sistem-sistem berbasis open source selain untuk mendapatkan keuntungan secara finansial (tanpa lisensi) juga mengurangi ketergantungan terhadap vendor tertentu.

Penjelasan masing-masing tools akan kami rangkum secara singkat sebagai berikut :

Java JDK

Java JDK merupakan tools dasar yang digunakan untuk membuat dan menjalankan program-program berbasis Java. Java merupakan salah satu bahasa pemrograman berbasis OOP yang memiliki kemampuan berjalan di berbagai sistem operasi. Semua program yang ditulis dengan bahasa Java, setelah dikompilasi bisa dijalankan di semua OS tanpa harus merubah kode pemrograman di dalamnya. Tentu saja dalam OS tersebut haru terinstall JRE (Java Runtime Environment) terlbeih dahulu.

Java JDK merupakan aplikasi yang bisa diunduh secara gratis di laman website Oracle. Meskipun sifatnya free, tools yang tersedia di sana bukanlah program yang bersifat open source. Bagi pengguna Linux maka penulis sarankan untuk menggunakan OpenJDK, yang memiliki standard seperti Oracle dan berbasis open source. Beberapa distribusi Linux juga sudah menyediakan OpenJDK sebagai repositori standar, sehingga proses instalasi akan menjadi semakin mudah.

Eclipse

Eclipse merupakan sebuah IDE (Integrated Development Environment) yang ditulis dengan bahasa Java dan keandalannya sudah diakui dunia. Dengan program Eclipse ini kita bisa membuat program dan kemudian menjalankannya tanpa harus berpindah-pindah ke program lain. Program seperti ini sangat membantu dalam proses coding karena kemampuannya yang terintegrasi.

Secara struktur Eclipse merupakan aplikasi modular yang memungkinkan untuk menambah fungsionalitasnya dengan cara menambah plugins. Tersedia banyak sekali plugins untuk membantu proses pemrograman, dan mempermudah konfigurasi aplikasi Java yang dibuat.

(6)

Secara umum masing-masing plugins mewakili sebuah fungsi baik untuk akses ke server ataupun untuk pembuatan modul-modul tertentu.

Wildfly

Wildfly boleh dikatakan sebagai salah satu application server yang paling tua saat ini. Sejarah pengembangannya bahkan mempengaruhi perkembangan J2EE secara keseluruhan. Kelengkapan sistem serta stabilitas APInya membuat server ini dipakai oleh banyak organisasi/perusahaan dan menjalankan proses-proses kritis yang ada dalam bisnis mereka. Sebelumnya untuk mengetahui sejarah dari pengembangan Wildfly, penulis sarankan untuk mengunjungi situs resmi mereka di www.wildfly.org.

Untuk proses pengembangan aplikasi Wildfly menyediakan plugins tambahan untuk Eclipse, yang berguna untuk memudahkan programmer dalam membuat modul-modul. Hanya saja plugins ini harus diunduh dan kemudian dipasang ke dalam Eclipse. Plugins eclipse ini akan membantu proses pekerjaan harian programer seperti pembuatan project, debugging dan proses-proses lainnya.

Modul Wildfly

Modul wildfly yang biasanya dibutuhkan adalah reporting, konektor database dan modul-modul lain yang spesifik terhadap aplikasi kita. Biasanya modul-modul-modul-modul ini merupakan kumpulan file .jar yang kemudian di gabungkan dalam satu folder dan ditambah dengan konfigurasi internal wildfly. Keuntungan penggunaan modul wildfly adalah kemudahan manajemen server dan deployment, sehingga programmer langsung bisa menggunakan modul tersebut dengan hanya menambahkan konfigurasi keterkaitan (dependency) ke dalam aplikasinya.

(7)

Mengenal J2EE (Java 2 Platform

Enterprise Edition)

Teknologi J2EE memungkinkan sebuah program didisain sedemikian rupa sehingga struktur yang digunakan merupakan lapisan-lapisan terkait satu sama lain dengan model ikatan yang longgar. Ikatan-ikatan ini biasanya dihubungkan dengan protokol ataupun antarmuka program yang di standardisasi. Untuk menggambarkan struktur sebuah program sesuai dengan spesifikasi J2EE, perhatikan diagram di bawah ini.

Dengan metode antarmuka seperti ini, akhirnya memungkinkan bagi pengguna untuk menggabungkan fungsi-fungsi dari aplikasi-aplikasi yang ada dan menjadikannya sebuah aplikasi besar yang terintegrasi. Struktur ini memberi kesempatan untuk berkembangnya aplikasi-aplikasi khusus sesuai dengan kebutuhan pengguna, dan secara bersamaan memanfaatkan kemampuan aplikasi-aplikasi lain yang sudah teruji.

Infrastruktur Teknologi J2EE

Teknologi Servlet

Teknologi Java Servlet merupakan komponen arsitektur J2EE yang berada dalam sebuah server sehingga memberikan sebuah mekanisme tambahan bagi Web Server dan bisa diakses oleh pengguna. Dengan mekanisme tersebut programmer bisa membuat sebuah program

Drawing 2: Model pemrograman multitier dengan J2EE

Client App Server

Database

JSON, XML, Direct Links, Other protocols EJB Browser Others Other Server Servlet

(8)

khusus yang bisa diakses langsung oleh pengguna melalui browser maupun secara tidak langsung melalui program lain. Teknologi servlet memungkinkan pembuatan sebuah program yang lebih simpel dan konsisten secara struktural.

Teknologi servlet menjadi antarmuka terdepan bagi sebuah aplikasi Java, baik antarmuka yang bisa diakses dengan browser (Web UI) ataupun antarmuka yang berhubungan dengan program lain (Web Services, JSON).

Teknologi EJB (Enterprise Java Bean)

Teknologi EJB adalah sebuah teknologi yang menjadi komponen arsitektur J2EE yang berada di dalam sebuah server dan menjadi pusat terjadinya proses. Dengan teknologi ini programmer hanya perlu untuk berpikir bagaimana proses bisnis yang terjadi dalam sebuah organisasi ataupun perusahaan di terjemahkan dalam bentuk program. Sehingga sistem yang tercipta bisa lebih memenuhi kebutuhan pengguna.

EJB menjadi pusat dari teknologi J2EE dan memiliki akses ke database (melalui JPA), serta menjadi sistem pemroses terhadap input dari luar (Servlet, JMS, Server lain). Karena fungsinya yang sangat penting ini maka EJB dilengkapi dengan mekanisme pendukung seperti manajemen transaksi, serta fungsi-fungsi lain.

Teknologi JPA (Java Persistence API)

Teknologi JPA adalah sebuah teknologi yang juga menjadi bagian arsitektur J2EE yang menghubungkan bisnis proses dengan penyimpanan data (data store). JPA memungkinkan programmer untuk membuat program yang tidak tergantung pada database tertentu, sehingga ketika pengguna ingin memanfaatkan server database yang sudah ada, maka program hanya perlu di konfigurasi ulang, tanpa perlu melakukan perubahan pada kodenya.

Teknologi JMS (Java Messaging Service)

Teknologi JMS juga merupakan bagian arsitektur J2EE yang mengimplementasikan fungsi middleware dan memediasi pengiriman message dari satu client ke client yang lain ataupun dari client ke server dan sebaliknya. Dengan adanya JMS kita bisa menangani model antrian (queue) sehingga data masuk yang jumlahnya besar bisa ditangani secara proporsional oleh server dan menghasilkan sebuah sistem lebih terpercaya.

JBoss AS 7

JBoss AS merupakan sebuah server yang mengimplementasikan spesifikasi J2EE 6 secara lengkap dan sudah memperoleh sertifikasi dari konsorsium Java. Secara historis proyek Jboss menjadi salah satu faktor penentu perkembangan teknologi J2EE yang ada saat ini. Dalam rilis versi 7 saat ini, Jboss menawarkan kelengkapan konfigurasi yang lebih baik dari versi-versi sebelumnya. Administrasi sistem berbasis web bawaan Jboss sudah cukup baik untuk mencukupi kebutuhan konfigurasi maupun monitoring dasar sistem secara keseluruhan.

Instalasi

Untuk memasang Jboss AS anda cukup dengan mengunduh aplikasinya dari situs

www.jboss.org yang tersedia dalam bentuk file terkompresi. Untuk menginstallnya juga cukup dengan membuka/dekompress file tersebut, dan mengkopi isinya ke dalam sebuah direktori tertentu. Tentu saja sebelumnya program Java (versi JDK) sudah terpasang di komputer

(9)

tersebut. Dalam konfigurasi defaultnya Jboss AS 7, membutuhkan Java versi 7. Tetapi dalam beberapa praktek yang sudah dilakukan dengan menggunakan Java 6-pun Jboss AS 7 bisa dijalankan dengan baik.

Eksekusi

Setelah proses instalasi berjalan dengan sukses (seperti pada pada sub bab di atas), maka selanjutnya anda bisa menjalankan server Jboss di komputer lokal. Untuk menjalankan server Jboss kita cukup memanggil perintah :

<direktori instalasi>/bin/standalone.sh atau di Windows dengan perintah pada cmd:

<direktori instalasi>\bin\standalone.bat

Selanjutnya setelah perintah di atas dijalankan maka Jboss akan bisa diakses dari alamat

http://localhost:8080. Ketika kita mengakses alamat ini, yang akan muncul adalah halaman depan aplikasi Jboss.

Administrasi

Untuk memudahkan proses administrasi, server Jboss juga dilengkapi dengan konsol administrasi berbasis web yang bisa diakses dengan browser melalui alamat

http://localhost:9990. Tetapi sebelum anda bisa mengakses halaman ini anda harus memasukkan dulu nama user admin dan password-nya menggunakan konsol admin.

(10)

Aplikasi Multitier dengan Java

Dalam rekayasa perangkat lunak istilah multitier (atau biasa juga disebut n-tier) digunakan untuk menandai struktur aplikasi client server yang memisahkan secara logika bagian tampilan, bagian pemrosesan, dan bagian manajemen data. Dengan model seperti ini programmer bisa membuat bagian-bagian aplikasi yang lebih fleksibel dan bisa digunakan kembali untuk aplikasi lain (reusable). Dengan pemisahan bagian-bagian tampilan, proses, serta manajemen data memungkinkan programmer untuk melakukan perubahan pada bagian-bagian tertentu saja tanpa harus mengubah keseluruhan disain. Untuk memperjelas konsep multi tier perhatikan diagram di bawah ini, dan akan dijelaskan dalam sub bab masing-masing.

Keunggulan dari sisi modularitas ini tidak serta merta menjadi keunggulan pula dalam hal proses pembuatan aplikasi. Di perlukan kejelian dan ketelitian yang lebih dalam mendisain tier-tier ini sehingga modularitas yang didapat tetap bisa menghasilkan kecepatan proses keseluruhan program. Tier yang paling sering digunakan dan paling populer adalah model struktur 3-Tier, dimana struktur tersebut terdiri dari presentation tier, logic tier, data tier. Sekilas struktur 3-Tier memiliki kemiripan dengan model-model pemrograman seperti MVC (Model-View-Controller) ataupun MVP (Model-View-Presenter). Tetapi sesungguhnya terdapat perbedaan yang mendasar antara keduanya, yaitu pada sisi aliran data. Pada struktur 3-Tier tidak pernah ada aliran data langsung dari tampilan menuju data tier ataupun sebaliknya. Sedangkan pada MVC ataupun MVP proses itu lebih bersifat triangular. Jadi komponen model bisa melakukan update secara langsung terhadap view.

Presentation-tier

Application-tier

Data-tier

Cari

public void onCari() {

criteria = getFromUi; result = find(criteria); sendToUi(result); }

List<Result> find(String criteria)

(11)

Presentation-tier

Presentation-tier merupakan bagian yang menghubungkan aplikasi dengan pengguna. Bagian ini menjadi bagian yang tampil di depan pengguna dan menerima input yang dimasukkan oleh pengguna. Semua masukan / input ini kemudian diteruskan kepada proses-tier dan selanjutnya tier ini akan menampilkan hasil dari pengolahan data tersebut.

Saat ini aplikasi-aplikasi sekelas enterprise menggunakan pattern MVC ataupun MVP dalam presentation-tier mereka. Jenis aplikasi tampilan bisa diimplementasikan dalam bentuk web maupun aplikasi desktop biasa, yang tersambung dengan server. Untuk menjembatani komunikasi data antara presentation dengan application biasa digunakan protokol-protokol tertentu seperti RPC, WebServices, JSON, ataupun protokol propiteri yang lain.

Implementasi dengan Java

Presentation-tier di Java diwakili dengan beberapa bentuk aplikasi, antara lain :

1. Aplikasi berbasis web, biasanya diwujudkan dengan menggunakan aplikasi dynamic web yang memiliki banyak sekali komponen, seperti java servlet, JSP dan juga HTML. 2. Aplikasi desktop, bisa diwujudkan dengan bantuan library seperti Swing, SWT.

3. Aplikasi downloadable desktop JNLP

Pada buku ini implementasi yang kita bahas secara mendalam adalah aplikasi berbasis web, terutama dengan teknologi yang ditawarkan Google yaitu GWT (Google Web Toolkit). Tentu saja pembahasan tentang java servlet akan kita lakukan dengan sangat detail, karena teknologi servlet-lah yang menjadi tulang punggung implementasi aplikasi berbasis web di Java.

Application-tier

Bagian application-tier merupakan bagian pengolah data yang telah dikirim oleh presentation-tier dan juga sebaliknya memberikan data hasil olahan yang diminta oleh bagian tampilan. Data hasil olahan bisa juga diteruskan lagi ke bagian manajemen data untuk disimpan. Di sinilah biasanya proses bisnis aplikasi diimplementasikan dan disesuaikan dengan kebutuhan pengguna. Salah satu syarat penting dari bagian ini adalah fleksibilitas yang tinggi, dan bisa digunakan kembali (reuseable). Karena kepentingan fleksibilitas inilah maka, konsorsium Java memberikan spesifikasi khusus yang terangkum dalam J2EE dan diwujudkan dalam bentuk application server.

Implementasi dengan Java

Implementasi application-tier di Java biasanya diwujudkan dalam sebuah aplikasi yang sudah jadi dan di satukan dalam bentuk application server. Teknologi utama yang mewakili application-tier dalam Java terangkum dalam EJB. Setiap application server memiliki bagian ini dengan implementasi komunikasi yang standar, meskipun diprogram secara berbeda.

Data-tier

Bagian ini merupakan bagian terakhir dari struktur multi-tier yang bertugas untuk menyimpan dan mengambil data. Dalam prakteknya bagian data-tier ini bisa berupa database, file ataupun bentuk penyimpanan yang lain. Data yang tersimpan dalam sistem manajemen data belum tentu memiliki struktur yang sama dengan model data yang digunakan dalam application-tier.

(12)

Untuk itu biasanya programmer perlu melakukan penyesuaian-penyesuaian ataupun konversi sehingga data yang di ambil dari penyimpanan data bisa digunakan. Begitu juga sebaliknya data yang akan disimpan ke dalam sistem manajemen data juga harus disesuaikan tipenya sesuai dengan yang diijinkan oleh sistem tersebut.

Implementasi dengan Java

Bagian dari data-tier ini diwakili oleh teknologi JPA (Java Persistence API). Meskipun JPA secara teknis memiliki fitur yang lebih dari sekedar akses data. Karena itu penjelasan tentang JPA akan dilakukan dalam bab tersendiri.

(13)

Web Dinamis dan Servlet

Sebuah aplikasi web dengan Java terdiri dari file html, jsp, dan aplikasi servlet yang biasanya diorganisasikan dalam sebuah file war. Susunan file html yang bisa dimengerti oleh server web java sama persis dengan html standard yang biasa kita kenal. Kemampuan lain yang dimiliki oleh web server Java adalah fitur skripting yang langsung disediakan oleh server web, berupa bahasa pemrograman JSP. JSP ini kalau boleh dikatakan mirip dengan PHP, hanya saja tidak perlu tambahan program khusus untuk menjalankan JSP.

Sebuah kelebihan lain yang dimiliki oleh sistem web dengan Java, adalah tersedianya komponen servlet, yang berfungsi seperti plugins dan memiliki kemampuan sangat tinggi, karena dia mengadop bahasa Java untuk realisasnya. Selain untuk keperluan pembuatan web dinamis, servlet juga bisa memberikan kemungkinan program untuk berkomunikasi dengan server menggunakan protokol http, tanpa harus menggunakan html.

Struktur aplikasi web dengan Java

Seperti telah dijelaskan di bagian pembuka, ada 3 komponen dasar sebuah aplikasi web dengan Java. Dalam sub bab ini akan kami uraikan bagaimana realisasi dari sebuah aplikasi web dengan Java, khususnya dengan menggunakan JBoss.

Struktur direktori

Sebuah apikasi web dengan java memiliki susunan dorektori seperti di bawah ini • root (dir) • index.html • xxxxxxx.html • images (dir) • WEB-INF (dir) • web.xml • lib (dir) • classes (dir)

Pada bagian root direktori biasanya terdapat sebuah file index.html atau file apapun yang niasanya digunakan sebagai welcome file. Susunan selanjutnya untuk file html tergantung dari kebutuhan misalnya direktori images untuk meletakkan gambat-gambar.

Bagian yang penting selanjutnya untuk setiap aplikasi web dalam Java adalah direktori WEB-INF yang didalamnya terdapat file konfigurasi global (web.xml) sebuah aplikasi. Dalam file web.xml ini terdapat parameter-parameter yang mengatur perilaku aplikasi, seperti file mana yang akan ditampilkan pertama kali ketika aplikasi tersebut dijalankan oleh server.

Dalam direktori WEB-INF juga terdapat sebuah direktori yang penting lagi yaitu direktori lib. Di dalam dorektori lib ini terdapat library-library yang dibutuhkan oleh aplikasi kita ketika berjalan. Biasanya servletlah yang membutuhkan library-library seperti itu. Karena tingkat kompleksitasnya, maka bahasan tentang servlet akan kita bahas dalam sub bab tersendiri.

(14)

web.xml

Sebuah susunan web.xml dalam bentuk yang lengkap bisa anda lihat di bawah ini.

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"> <!-- Servlets --> <servlet> <servlet-name>systemServlet</servlet-name> <servlet-class>org.kembang.module.server.SystemServiceImpl</servlet-class> </servlet> <servlet-mapping> <servlet-name>systemServlet</servlet-name> <url-pattern>/gladmin/system</url-pattern> </servlet-mapping>

<!-- Default page to serve --> <welcome-file-list>

<welcome-file>GlAdmin.html</welcome-file> </welcome-file-list>

</web-app>

Karena perilaku sebuah aplikasi web ditentukan oleh konfigurasinya, maka perlu secara hati-hati menset nilai-nilai yang ada di dalamnya. Untuk sebuah aplikasi yang sering kita gunakan dalam contoh di buku ini, konfigurasi umum seperti pada contoh di atas sudah sangat mencukupi.

Servlet

Servlet merupakan sebuah komponen dinamis dalam senuah aplikasi web dengan bahasa Java. Penamaan servlet sendiri merujuk pada teknologi yang lain yaitu applet. Dalam dua teknologi ini, ada sebuah rencana besar dari para disainer bahasa Java yaitu applet digunakan untuk mengakomodir aplikasi client, sedangkan servlet merupakan aplikasi yang berjalan di server. Servlet bisa diakses dari browser dengan cara memanggil namanya, seperti halaman web biasa. Cara lain untuk mengakses servlet adalah dengan cara membuat program kecil yang berfungsi sebagai http client, dan mengakses ke halaman servlet tersebut.

Pengiriman data dari form HTML

Untuk mengirim data dari client ke server, protokol http mendefinisikan dua cara akses, yaitu dengan metode GET dan POST. Biasanya proses pengiriman data dilakukan oleh sebuah form dalam html seperti dalam contoh berikut :

(15)

<form action=”test” method=”GET”>

<input type=”text” name=”data”></input> <input type=”submit” value=”Kirim”></input> </form>

Pada contoh di atas, kita meminta supaya data yang kita input dari html bisa dikirim ke server melalui aplikasi / servlet yang bernama test (lihat bagian form action). Selanjutnya parameter yang akan dikirim adalah “data” dan isi parameter tersebut adalah apa yang kita ketikkan pada inputan.

Contoh kode servlet

Di bawah ini adalah sebuah contoh kode sebuah servlet yang sangat sederhana, dan mewakili segala servlet yang nanti akan kita buat.

// Import required java libraries import java.io.*;

import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet class

public class HelloWorld extends HttpServlet { private String message;

public void init() throws ServletException {

// Do required initialization message = "Hello World"; }

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

{

// Set response content type

response.setContentType("text/html"); // Actual logic goes here.

String data = request.getParameter("data"); PrintWriter out = response.getWriter(); out.println("<h1>" + data + "</h1>"); }

public void destroy() {

// do nothing. }

(16)

Pada contoh servlet yang ada di atas, kita menggunakan response doGet untuk menerima request dari client. Kita memilih menggunakan doGet karena method yang digunakan oleh client (form method) adalah perintah GET. Ketika client menggunakan metode POST maka response yang digunakan adalah doPost. Untuk memudahkan kita dalam proses pengetesan biasanya contoh-contoh yang kita buat lebih sering menggunakan perintah GET, yang bisa langsung dilihat / diakses dengan menggunakan browser.

Aplikasi Client dengan Java

Pada contoh berikut kita akan mencoba membuat sebuah aplikasi yang mengakses servlet dari sebuah aplikasi client. Untuk keperluan ini kita perlu sebuah library yang disediakan oleh proyek Apache, yaitu http-client. Ada dua jenis apliakasi contoh yang akan kita buat, yaitu yang menggunakan metode GET, dan yang lainnya menggunakan metode POST.

Client dengan metode GET

HttpClient client = new DefaultHttpClient();

HttpGet request = new HttpGet("http://localhost:8080"); HttpResponse response = client.execute(request);

// Get the response

BufferedReader rd = new BufferedReader

(new InputStreamReader(response.getEntity().getContent()));

String line = "";

while ((line = rd.readLine()) != null) { textView.append(line);

}

Client dengan metode POST

HttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost("http://localhost:8080/register"); try {

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new

BasicNameValuePair("registrationid","123456789"));

post.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = client.execute(post);

BufferedReader rd = new BufferedReader(new

InputStreamReader(response.getEntity().getContent())); String line = "";

while ((line = rd.readLine()) != null) { System.out.println(line);

}

} catch (IOException e) { e.printStackTrace(); }

(17)
(18)

EJB (Enterprise Java Beans)

EJB (Enterprise Java Beans) merupakan konsep Java untuk mewujudkan sebuah lapisan proses pengolahan data yang standar. Standar merupakan kata kunci yang sangat penting dalam disain EJB, sehingga semua komponen yang dibuat dengan menggunakan konsep EJB bisa di “mengerti” oleh semua server. Inilah salah satu syarat dari tier proses yang paling penting yaitu fleksibilitas dan dapat digunakan kembali (reusable).

Ada beberapa fitur EJB yang sangat membantu untuk meciptakan aplikasi yang sangat modular yaitu :

1. Dilengkapi dengan interface yang memungkinkan untuk proses pemrograman terdistribusi. 2. Memungkinkan untuk menyembunyikan implementasi proses, dan memisahkannya dari

interface.

Gambaran sebuah modul EJB adalah sebagai berikut :

Ada dua jenis EJB yang sekarang sering digunakan (EJB 3.1) yaitu : 1. Session Bean : Statefull, Stateless, Singleton

2. Message Bean

Dalam buku ini yang akan banyak digunakan adalah Session Bean yang Stateless, dan Message Bean pada beberapa bagian.

Modularitas EJB

Teknologi EJB muncul dikarenakan adanya tuntutan untuk membuat aplikasi yang bisa memanfaatkan model proses terdistribusi. Modularitas EJB didisain untuk bisa mencapai taraf modular secara binary, sehingga secara teoritis, sebuah modul yang sudah dikompilasi bisa dipakai oleh modul lain tanpa harus mengkompilasi ulang. Dengam metode seperti ini dimungkinkan untuk mengggabungkan modul-modul yang sudah jadi ke dalam sebuah aplikasi yang kita rancang. Metode modular binary ini akan sangat meningkatkan efektifitas proses coding dan mengurangi munculnya bug yang berulang-ulang.

Modul EJB

Interface

(19)

Skenario dan gambaran besar sebuah aplikasi yang menggunakan basis EJB bisa dilihat pada diagram di bawah ini:

Interface

Interface menggambarkan sambungan-sambungan yang bisa diakses oleh modul ataupun aplikasi lain. Apabila program lain ingin mengakses fungsi di dalam modul tersebut, maka program tersebut harus mengakses melalui interface yang telah didefinisikan. Interface sebuah EJB bisa dikatakan berfungsi juga sebagai sebuah API. Karena itu biasanya kita mendefinisikan sebuah interface EJB dalam sebuah proyek tersendiri, sehingga bisa di ekspor sebagai file jar, dan bisa di gunakan oleh orang lain.

Implementasi

Bagian implementasi EJB merupakan isi program yang sebenarnya dari sebuah modul, dan tersimpan dalam bentuk binary di dalam application server. Dengan mekanisme akses yang disiapkan oleh library EJB, modul lain bisa mengakses dari luar melalui interfacenya. Ketika implementasi EJB sudah di masukkan ke dalam server, maka semua aplikasi yang ada dalam server tersebut bisa menggunakan modul itu dengan syarat ada akses interface yang disediakan oleh EJB tersebut.

Implementasi EJB dengan Java dan Jboss AS 7

Dalam sub bab ini kita akan coba bahasa lebih mendalam sebuah modul EJB berdasarkan contoh.

Interface

Interface IExample {

public String getMessage(String name); }

EJB 1

EJB 2

(20)

Implementasi

@Stateless

@Remote(IExample.class)

public class Example implements Iexample { public String getMessage(String name) {

return “Hallo “+name+”!!!”; }

}

Akses (dari Servlet)

… @EJB

IExample example; …

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// Set response content type

response.setContentType("text/html"); // Actual logic goes here.

String data = request.getParameter("data"); data += example.getMessage(data)

PrintWriter out = response.getWriter(); out.println("<h1>" + data + "</h1>"); }

Layering dengan EJB

Salah satu ide lain untuk membuat sistem yang modular secara binary, programmer dituntut untuk membuat sebuah layer lagi yang menghubungkan modul-modul lain yang kita impor. Layer ini memiliki tugas utama sebagai koordinator / integrator dari layer-layer yang ada dibawahnya. Layer inilah yang melayani permintaan aplikasi tampilan (UI) ataupun aplikasi lain dari luar untuk proses pengolahan data. Layer tambahan ini biasanya kita sebut dengan layer proses bisnis, karena berisi logika-logika dari alur proses.

(21)

Untuk memperjelas konsep ini perhatikan bagan di bawah ini:

Integrator pada dasarnya adalah sebuah EJB juga, yang mengakses ke EJB-EJB dibawahnya sehingga secara akses dia memiliki akses dari berbagai fungsi, maupun struktur. Dengan demikian maka EJB pada level Integrator ini tidak memiliki struktur data tersendiri, karena struktur data yang dibutuhkan sudah disediakan oleh EJB pada layer di bawahnya.

Modul 1

Modul 2

Integrator

(22)

JPA (Java Persistence API)

Sebuah persistence entity adalah sebuah kelas java yang sederhana yang tersambung dengan sebuah tabel pada database tertentu. Sehingga instance dari sebuah kelas entity memiliki korespondensi langsung dengan isi tabel / record. Beberapa entity bisa memiliki relasi antar satu dengan yang lain, yang bisa digambarkan dengan object atau metadata relasi. Selanjutnya cara menggambarkan relasi ini bisa dilakukan dengan anotasi ataupun dengan sebuah file xml tambahan.

Para programmer java enterprise biasanya lebih memilih untuk menggunakan framework object persistence yang disediakan oleh bermacam-macam proyek opensource daripada menggunakan teknologi entity bean yang disediakan oleh teknologi EJB. Situasi ini dipicu oleh cara penggunaan teknologi entity bean EJB yang rumit, dan dinilai sangat berat. Karena itulah maka akhirnya teknologi framework persistence ini akhirnya di adopsi oleh tim J2EE dan menjadi standar bagi manajemen persistence object pada EJB, dan dituangkan dalam JPA. Java Persistence API hanya berisi spesifikasi teknologi penyimpanan data ke dalam sistem basis data relasional. Inilah fokus utama JPA yaitu membuat map obyek ke dalam tabel basis data atau dikenal dengan istilah ORM. Dan fokus ini di jelaskan dengan sangat gamblang dalam dokumentasi spec.

Beberapa keuntungan JPA

Ketika kita berinteraksi dengan data, biasanya yang langsung tergambar di benak kita adalah penggunaan RDBMS (Relational Database Management System). Karena biasanya sebuah sistem RDBMS menyediakan banyak kemudahan dan standardisasi dalam proses penyimpanan dan pengambilan data. Hanya saja karena model struktur yang berbeda, maka biasanya seorang programmer akan memiliki tambahan pekerjaan dalam pembuatan proses konversi dari tabel di sebuah database menjadi sebuah struktur data dalam bahasa pemrograman. Karena permasalahan inilah maka lahir ide dari sebuah persistence object, dan salah satu teknologi yang paling sering digunakan dalam Java adala JPA. Ada beberapa keuntungan atas penggunaan JPA yang akan kita bahas dalam sub bab berikut ini.

Sebuah Entity adalah POJO (Plain Old Java Object), tidak ada logika

Dalam JPA sebuah Entity digambarkan / dimodelkan dengan menggunakan POJO, sebuah obyek Java yang primitive. Kelas yang mewakili sebuah Entity benar-benar kelas dasar tanpa harus menjadi turunan dari kelas lain. Karena itu maka sebuah entity bisa juga digunakan pada operator new, dan perlakuan-perlakuan lain layaknya kelas dalam Java.

Menggunakan anotasi untuk mempersingkat penulisan

Untuk memudahkan penulisan maka sebuah kelas yang digunakan untuk menjadi entitas ditandai dengan anotasi @Entity. Sebuah anotasi merupakan fitur yang mulai diperkenalkan sejak J2SE 5, dan terdiri dari tanda @ dan diikuti dengan tipe anotasi.

(23)

Menggunakan relasi-relasi yang ada dalam teori graph

JPA memanfaatkan nama relasi-relasi secara apa adanya dengan bantuan anotasi, seperti @OneToOne, @OneToMany, @ManyToOne. Dengan menandai sebuah member entity dengan anotasi seperti ini langsung tergambar bagaimana hubungan antara satu kelas dengan yang lainnya. Penggunaan anotasi seperti ini sangat membantu programmer dalam mengimplementasikan model yang menggambarkan perilaku sistem secara keseluruhan.

Contoh Entity dengan JPA

Sebuah contoh sederhana kelas (POJO) yang dijadikan entity adalah sebagai berikut :

@Entity

public class Customer { @Id

long id; String code; String name;

. . . getters dan setters }

Entity dengan ORM

(24)

JMS (Java Messaging Service)

Membuat JMS

Mendefiniskan Destination pada Wildfly Membuat sebuah service JMS

(25)

EAR (Enterprise Archive)

Sebuah modul aplikasi dalam konteks Jboss AS bisa terdiri dari beberapa komponen pembentuk, yaitu EJB, Applet.

(26)

Daftar Pustaka

1. Oracle Java, http://www.oracle.com/us/technologies/java

2. Eclipse, http://www.eclipse.org

3. JBoss, http://www.jboss.org

4. Wikipedia, http://www.wikipedia.org

Referensi

Dokumen terkait

Pada akhirnya, mural justru menjadi seni publik yang tidak hanya dimiliki oleh seniman mural saja, namun masyarakat yang tidak paham menggambar dengan indah pun dapat

Tujuan yang ingin dicapai dalam penelitian ini adalah untuk mengetahui pengaruh profesionalisme auditor dan kualitas audit terhadap tingkat materialitas dalam pemeriksaan

Maka dari itu, dengan kesempatan ini, Bapak Presiden saya mohon untuk revisi UU khususnya tentang sanksi pidana karena di sana juga tidak membedakan antara nelayan kecil dan

Sehingga konsepsi pendidikan Islam fundamental lebih di elaborasi lagi dalam persepektif Islam sehingga menemukan titik temu antara pendidikan Islam yang selama

Dalam kegiatan ini, supervisor dan guru melaksanakan pembicaraan tentang hasil supervisi penyusunan RPP yang pada mengacu kepada Permendiknas Nomor 41 Tahun 2007

bahwa untuk melaksanakan ketentuan Pasal 181 ayat (1), Undang Nomor 32 Tahun 2004 tentang Pemerintahan Daerah (Lembaran Negara Republik Indonesia Tahun 2004 Nomor

Dari hasil survey awal yang dilakukan dengan wawancara langsung pada ibu hamil yang hadir di posyandu terhadap 10 orang yang ada diwilayah kerja Puskesmas Buhit

Jl Jend Gatot Subroto Kav 9-11 Overburden Removal Coal Getting Coal Hauling. PH: 021-5257481 (million bcm) (million ton)