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 public enum OPERATION {ADD, SUBSTRACT, MULTIPLY, DIVIDE}; 08 09 public int calculate(OPERATION operation, int oper1, int oper2); 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. 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 /** * Default constructor. 13 */ 14 public CalculatorSession() { 15 16 } // TODO Auto-generated constructor stub 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; 26 case DIVIDE: 27 return oper1/oper2; default: 28 29 throw new UnsupportedOperationException("Not supported yet."); 30 } 31 32 } } 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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 02 pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 04 <html> 03 05 <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO06 8859-1"> 07 <title>Java EE Calculator</title> 08 </head> 09 <body> <h2>Welcome to Java EE Calculator Test Project 10 !</h2> <form 11 action='<%=request.getContextPath()%>/CalculatorServlet' method='POST'> 12 Operation: 13 <select name="operation"> <option selected 14 value="ADD">ADD</option> <option value="SUBSTRACT">SUBSTRACT</option> <option 16 value="MULTIPLY">MULTIPLY</option> 15 <option value="DIVIDE">DIVIDE</option> 18 </select> 17 19 20 Operand 1:<input type="text" name="oper1" value="0" /> 21 22 Operand 2:<input type="text" name="oper2" value="0" /> 23 24 <input type="submit" value="Calculate" name="Calculate" /> 25 </form> 26 </body> 27 </html> 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 private static final long serialVersionUID = 1L; 20 21 CalculatorSessionLocal calculatorSession; 22 23 24 /** * @see HttpServlet#HttpServlet() 25 */ 26 public CalculatorServlet() { 27 28 super(); InitialContext ctx; 29 try { 30 31 ctx = new InitialContext(); calculatorSession = (CalculatorSessionLocal) ctx.lookup("TestEnterpriseProject/CalculatorSession/local"); 32 } catch (NamingException e) { 33 34 } 35 e.printStackTrace(); } 36 37 /** * @see HttpServlet#doGet(HttpServletRequest request, 38 HttpServletResponse response) 39 40 41 42 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } 43 44 /** * @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 int oper1 = Integer.parseInt(request.getParameter("oper1")); 50 int oper2 = Integer.parseInt(request.getParameter("oper2")); 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. 01 <html> 02 <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 04 <title>Java EE Calculator</title> 03 05 06 </head> <body> 07 <h2>Java EE Calculator Result:</h2> 08 Operation: <%=request.getParameter("operation")%> 09 10 Operand 1: <%=request.getParameter("oper1")%> Operand 2: <%=request.getParameter("oper2")%> Result:<B> <%= request.getAttribute("result")%></B> <a 1 href='<%=request.getContextPath()%>/'>BACK</a&a 2 mp;gt; 11 13 </body> 14 </html> 6. Deployment. Setelah selesai semua, buka tab Servers, klik kanan di JBoss v4.2, pilih Start untuk menjalankan JBoss application server. Setelah status JBoss berubah menjadi started, klik kanan di JBoss, pilih Add and Remove Projects, masukkan project TestEnterpriseProject. Jika status server sudah synchronized seperti ini, artinya project kita sudah berhasil dideploy pada JBoss. Buka web browser anda dan masukkan alamat http://localhost:8080/TestEnterpriseProjectWeb, dan Anda akan melihat halaman seperti berikut: Pilih operasi, masukkan operand 1 dan 2, kemudia tekan tombol calculate, maka hasil perhitungan akan ditampilkan pada halaman berikut. Like Be the first to like this post. September 1, 2008 - Posted by suhearie | Java, Java Enterprise | eclipse, ejb, java ee, jboss, jsp, servlet, tutorial 12 Comments » 1. Wah…artikel Java EEnya mantap nih…Malah lebih jelas dari tutorial resminya Sun (apalagi buat gw yang baru belajar Java EE) Nice blog Comment by Rio | September 6, 2008 | Reply 2. Bagus nih, bisa diteruskan jadi buku. Pakai Eclipse dan JBoss saja deh, banyak dipakai. Comment by Josef | September 10, 2008 | Reply o Semoga tercapai, kapan-kapan Comment by suhearie | March 5, 2009 | Reply 3. bagus banget nih, jadi semangat lagi mo belajar java. pakai IntelliJ IDE dong. soalnya awalnya saya pake itu, trus keliatan susah jadi males belajarnya. thanks bro. Comment by mukasintu | October 27, 2008 | Reply o Eclipse mantep, udah gitu gratis pula. IntelliJ denger2 sih bagus juga (kata temen), tapi belum pernah pake, karena belum ada yang kasih donasi license. Comment by suhearie | March 5, 2009 | Reply 4. nice tutorial, thanks very much Comment by budi | January 16, 2009 | Reply 5. Mas numpang tanya, kalo menghubungkan EJB ke database (MySQL,Postgre) bagaimana ya? mungkin seperti pembuatan “buku tamu” dan sebagainya. Saya sangat tertarik sekali akan hal ini. terima kasih sebelumnya NB:atau mungkin mas memiliki sejumlah referensi yang bisa Saya baca. Comment by nukhran | September 16, 2010 | Reply o EJB sendiri ada 3 macam: Entity Bean, Session Bean & Message Driven Bean. Entity bean adalah object yang merepresentasikan data di database, jadi kita tidak harus memanipulasi database menggunakan SQL query. Comment by suhearie | October 23, 2010 | Reply 6. Thanks Suhu Ari atas pencerahannya.. sungguh lengkap sekali tutorial ini. cukup membantu untuk pemula seperti saya. Suhu, klo ada tambahan tulisan tolong kasi tau saya lagi yah hehehehhe.. thanks!!! Comment by binbinbo | October 19, 2010 | Reply o Sama-sama. Cuman sekarang saya jarang banget posting lagi. Comment by suhearie | October 23, 2010 | Reply 7. Very good tutorial ! It’s well explained so I understand it even without studying Indonesian language But unfortunately after doing all the steps correctly when I open the browser and type the URL i get nothing. Could you help? Comment by yassine | April 7, 2011 | Reply o Hi.. you’re welcome. Google translate is always there to help you If you got nothing after following all the steps, you may need to check the output of the JBoss in the eclipse console. It may have some error messages that give you a clue what was happening and take action from there. Comment by suhearie | September 19, 2011 | Reply Leave a Reply Enter your comment here... Guest Log In Log In Log In Email (required)(Not published) Name (required) Website Notify me of follow-up comments via email. Notify me of new posts via email. Post Comment « Previous | Next » About me Who am I ? I’m still finding out the perfect answer.. I’m just an ordinary man, but want to make my life extraordinary. Suhendra Arianto, or just call me Hendra, was born in Batu-Malang, East Java, Indonesia, and now I live in Kuala Lumpur, Malaysia. I studied physical engineering, but now I’m working as a software developer. It’s an exciting and challenging world, because I can envisage, design, and develop something that hopefully can make other people’s life easier. My major programming language is Java, a great technology that allows me to create great & exciting things. I’m still using PHP and C++ as well. So, I want to share my world (everything related to the machine called computer) in this blog. Shortly, I’m from Java island, I can speak Javanese, and I code in Java Yup, this is just an overview of me, my posts will describe me deeper… Contact: [email protected] Search Posts Search for: Categories o o o Database (2) Inside my mind (3) Java (12) Search o o Java Enterprise (4) My Days (7) Recent Posts o o o o o o o Concert, or Church Service? Oh Indonesia, unluckiest country? Pengenalan Web Framework: Apache Struts Membuat grafik dengan JFreeChart Java Enterprise, mulai dari mana ? (part 3 – Eclipse & JBoss) Java Enterprise, mulai dari mana ? (part 2 – Netbeans & Glassfish) Java Enterprise, mulai dari mana ? Tags batch belajar career certificationchart curriculum eclipse ejbemploymentemployment pass frameworkglassfish helloworld it Javajava ee jboss jdbcjfreechart job jsp kuala lumpur learn mahasiswamalaysia mysql netbeansobject oriented vitae cv desktopdosen programming oopperformance preparedstatementscjp security injection statement strutsswing ta Archives o o o o o o o o o November 2010 (2) October 2008 (1) September 2008 (2) August 2008 (6) July 2008 (4) June 2008 (2) February 2008 (1) January 2008 (1) December 2007 (1) Recent Comments servlet sql tutorialvisa web Diaz Pradiananto onJava Enterprise, mulai dari ma… Etty on Membuat grafik dengan JFr… suhearie on Pengenalan Web Framework: Apac… suhearie on Statement vs PreparedStatement… suhearie on About me September 2008 M T W T F S S « Aug Oct » 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Meta o o o o o Register Log in Entries RSS Comments RSS WordPress.com suhe arie's pages