java enterprise

Upload: agoes-lynx

Post on 12-Jul-2015

110 views

Category:

Documents


0 download

TRANSCRIPT

Java Enterprise, mulai dari mana ? (part 3 Eclipse & JBoss)Ini sebenarnya hanya perbandingan saja, saya ingin mencoba membuat aplikasi yang persis sama dengan yang ada di artikel sebelumnya. Bedanya, di part 2, saya membuatnya dengan IDE Netbeans dan mendeploynya di Glassfish, sedangkan kali ini saya akan menggunakan IDE Eclipse 3.4 for Java EE developer dan mendeploynya di JBoss versi 4.2.2. Karena di Java kita punya banyak pilihan, semoga artikel ini bisa memberi gambaran tentang alternatifalternatif yang bisa kita gunakan, sekaligus menunjukkan bahwa aplikasi yang sama bisa dideploy di atas 2 application server yang berbeda tanpa harus melakukan banyak perubahan. Di artikel ini saya tidak akan mengulang penjelasan tentang apa itu Java EE dan modul-modul yang terdapat di dalamnya. Silahkan lihat artikel ini untuk overview Java EE, dan artikel itu untuk penjelasan komponen Java EE yang digunakan di dalam contoh aplikasi ini. 1. Download dan install Eclipse 3.4 for Java EE developer bisa didownload dari http://www.eclipse.org/downloads/. JBoss bisa didownload di http://www.jboss.org/jbossas/downloads/, saya menggunakan versi 4.2.2 GA. Ekstrak file-file zip tersebut ke komputer Anda, selanjutnya saya akan menyebut direktori instalasi eclipse sebagai ECLIPSE_HOME dan direktori instalasi JBoss sebagai JBOSS_HOME. 2. Register JBoss ke Eclipse Klik menu Windows -> Preferences. Pilih item Server -> Runtime Environments di tree. Kemudian klik tombol Add untuk meregister application server baru ke dalam eclipse.

Di wizard New Server Environment, pilih JBoss -> JBoss v4.2, klik next, browse JBOSS_HOME anda, kemudian klik finish. Hasilnya, kita bisa melihat server JBoss kita teregister di eclipse, dan kita bisa mengontrol server ini seperti halnya Netbeans mengontrol Glassfish.

3. Setup Project Di panel Project Explorer, klik kanan, pilih New -> Project. Pilh Enterprise Application Project, klik next. Isi project name dengan TestEnterpriseProject, target envronment JBoss v4.2, EAR version 5.0 dan gunakan default configuration for JBoss v4.2. Klik next, akan ditampilkan module dependencies. Kita akan meng-create module baru, klik New Module. Pilih EJB module dan Web module saja.

Kembali ke wizard sebelumnya, aktifkan option Generate Deployment Descriptor. Hasilnya seperti gambar sebelah kanan.

4. EJB Module Klik kanan di project TestEnterpriseProjectEJB, pilih New -> Session Bean.

Eclipse

secara

otomatis

akan

meng-create

class

CalculatorSession

sebagai

bean

class

dan

CalculatorSessionLocal sebagai interface. Untuk membuat Session Bean, kita membutuhkan sebuah interface dan sebuah class. Interface digunakan untuk menentukan method apa yang bisa dipanggil oleh client, sedangkan bean class merupakan implementasi dari method tersebut. Business Logic Interface Local Interface CalculatorSessionLocal diberi annotation @Local, artinya interface ini bisa diakses oleh client yang local atau berada dalam JVM yang sama dengan EJB server. Client yang kita gunakan adalah web component (JSP dan Servlet) yang berjalan di application server yang sama, sehingga kita cukup menggunakan Local interface. Di interface ini, kita hanya mendefinisikan satu method saja yaitu calculate yang menerima parameter-parameter berupa OPERATION, operand1 dan operand2.

01 package suhearie.blog.enterprise.ejb; 02 import javax.ejb.Local; 03 04 @Local

05 public interface CalculatorSessionLocal { 06 07 08 09 10 11 }Bean Class Business Logic Implementation Class CalculatorSession adalah implementasi dari interface CalculatorSessionLocal. Kita menandainya dengan annotation @Stateless yang berarti kita mendefinisikannya sebagai Stateless Session Bean. Pada implementasi method calculate, kita melakukan perhitungan matematika yang sebenarnya.

public enum OPERATION {ADD, SUBSTRACT, MULTIPLY, DIVIDE};

public int calculate(OPERATION operation, int oper1, int oper2);

01 package suhearie.blog.enterprise.ejb; 02 03 import javax.ejb.Stateless; 04 05 /** 06 * Session Bean implementation class CalculatorSession 07 */ 08 @Stateless 09 public class CalculatorSession implements CalculatorSessionLocal { 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public int calculate(OPERATION operation, int oper1, int oper2) { switch(operation) { case ADD: return oper1+oper2; case SUBSTRACT: return oper1-oper2; case MULTIPLY: return oper1*oper2; /** * Default constructor. */ public CalculatorSession() { // TODO Auto-generated constructor stub }

26 27 28 29 30 31 32 } } yet."); }

case DIVIDE: return oper1/oper2; default: throw new UnsupportedOperationException("Not supported

5. Web Module Subproject TestEnterpriseProjectWeb harus mempunyai referensi ke subproject TestEnterpriseProjectEJB, agar servlet yang kita buat bisa memanggil komponen EJB. Klik kanan di project TestEnterpriseProjectWeb, pilih Build Path -> Configure Build Path. Pilih tab Projects, jika belum ada, klik tombol Add, kemudian pilih project TestEnterpriseProjectEJB.

File index.jsp, kita gunakan untuk membuat form html yang akan mensubmit parameter-parameter yang digunakan untuk melakukan perhitungan. Klikkanan di project TestEnterpriseProjectWeb, pilih New -> JSP.

Modifikasi menjadi seperti berikut:

01

04 03 05 07 Java EE Calculator 08 09 Welcome to Java EE Calculator Test Project 10 ! 12 Operation: 13 ADD SUBSTRACT MULTIPLY 15 DIVIDE 18 17 19 20 21 22 23 24 Operand 2: Operand 1:

25 26 27 Form html disubmit ke servlet (CalculatorServlet), yang sesaat lagi akan kita buat. Create servlet, dengan cara klik kanan di module TestEnterpriseProjectWeb, pilih New -> Servlet. Isikan class name CalculatorServlet, dan package suhearie.blog.enterprise.servlet.

Fitur EJB injection masih belum disupport oleh JBoss v4.2. Jadi di servlet ini, kita harus melakukan JNDI lookup secara manual. Lookup kita lakukan di dalam constructor. Default JNDI name untuk local EJB3 di JBoss adalah [ear-filename]/[bean-name]/local. Selanjutnya, kita mengambil parameter-parameter yang dikirim melalui http request, kemudian menggunakan session bean untuk melakukan perhitungan berdasarkan parameter-parameter tersebut. Hasil perhitungan kita masukkan sebagai attribut di object request. Untuk menampilkannya, kita akan memforward request menuju ke halaman JSP CalculatorPage.jsp (kita buat sesaat lagi) menggunakan RequestDispatcher. Modifikasi servlet tersebut menjadi seperti kode berikut.

01 package suhearie.blog.enterprise.servlet; 02 03 import java.io.IOException; 04 05 import javax.ejb.EJB; 06 import javax.naming.InitialContext; 07 import javax.naming.NamingException;

08 import javax.servlet.ServletException; 09 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 13 import suhearie.blog.enterprise.ejb.CalculatorSessionLocal; 14 15 /** 16 * Servlet implementation class CalculatorServlet 17 */ 18 public class CalculatorServlet extends HttpServlet { 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /** * @see HttpServlet#doGet(HttpServletRequest request, 38 HttpServletResponse response) 39 40 41 42 43 44 /** */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } } /** * @see HttpServlet#HttpServlet() */ public CalculatorServlet() { super(); InitialContext ctx; try { ctx = new InitialContext(); calculatorSession = (CalculatorSessionLocal) ctx.lookup("TestEnterpriseProject/CalculatorSession/local"); } catch (NamingException e) { e.printStackTrace(); } CalculatorSessionLocal calculatorSession; private static final long serialVersionUID = 1L;

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 46 */ 45 protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException { 48 String operation = request.getParameter("operation"); 47 49 50 51 int result = 5 2 calculatorSession.calculate(CalculatorSessionLocal.OPERATION.valueOf(operat ion), oper1, oper2); 5 request.setAttribute("result", result); 3 5 request.getRequestDispatcher("/CalculatorPage.jsp").forward(request 4 , response); 55 56 57 }File CalculatorPage.jsp, kita gunakan untuk menampilkan hasil perhitungan.

int oper1 = Integer.parseInt(request.getParameter("oper1")); int oper2 = Integer.parseInt(request.getParameter("oper2"));

}

01 02 04 Java EE Calculator 03 05 06

07 Java EE Calculator Result: 08 Operation: 09 10 11 Operand 1: Operand 2:

Result: BACK