26
Feb
08

Gabungin JSF & EJB pake netbeans tinggal klak klik jadi :)

Sekarang saya lagi pelajarin framework” JEE, makanya supaya gak lupa saya tulis deh. Berhubung semalam saya lembur sampe stengah tiga buat belajar EJB dan JSF (gimana ga nyampe jam stengah tiga wong saya mulainya jam stengah 1 :mrgreen: ), jadi harus saya tulis dulu biar mantep 😆

Langkah 1:

bikin dulu session beannya. Nih interfacenya(MahasiswaRemote.java), nanti tinggal di implements


package mahasiswa.bean;

import java.util.List;
import javax.ejb.Remote;
import mahasiswa.model.Mahasiswa;

/**
 * This is the business interface for Mahasiswa enterprise bean.
 */
@Remote
public interface MahasiswaRemote {
    List listMahasiswa();

}

dan yang ini implementasinya(MahasiswaBean.java)


/*
 * MahasiswaBean.java
 *
 * Created on February 25, 2008, 12:07 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package mahasiswa.bean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;
import mahasiswa.model.Mahasiswa;

/**
 *
 * @author JollkY
 */
@Stateless
public class MahasiswaBean implements MahasiswaRemote {
    Connection con = null;
    PreparedStatement state = null;
    ResultSet rs = null;
    /** Creates a new instance of MahasiswaBean */
    public MahasiswaBean() {
    }

    public void setConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            this.con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public List listMahasiswa() {
        this.setConnection();
        String query = "SELECT Id,nim,nama,alamat,fakultas FROM mahasiswa";
        List listMhs = new ArrayList();
        try {
            this.state = con.prepareStatement(query);
            this.rs = this.state.executeQuery();
            while(this.rs.next()) {
                Mahasiswa mhs = new Mahasiswa();
                mhs.setId(this.rs.getLong(1));
                mhs.setNim(this.rs.getString(2));
                mhs.setNama(this.rs.getString(3));
                mhs.setAlamat(this.rs.getString(4));
                mhs.setFakultas(this.rs.getString(5));
                listMhs.add(mhs);
            }
        } catch(Exception ex) {
            ex.printStackTrace();
        } finally {
            if(this.con!=null) {
                try {
                    this.con.close();
                    if(this.state!=null) {
                        this.state.close();
                    }

                    if(this.rs!=null) {
                        this.rs.close();
                    }
                } catch(Exception ex) {
                    ex.printStackTrace();
                }
            }
        }
        return listMhs;
    }

}

sebenarnya untuk membuat method bean nya kita tinggal klik kanan pada file bean (klo saya berarti file Mahasiswabean.java), kemudian pilih menu EJB methods -> Add business method… nanti akan ditampilkan window baru, jadi disana kita tinggal tentukan sendiri. Setelah selesai maka pada MahasiswaBean.java akan ditambahkan method tersebut dan juga pada MahasiswaRemote.java, otomatis.Langkah 2:

Saya buat kelas, sejenis action class pada struts. Kelas ini nantinya yang akan berhubungan dengan interface sesuai dengan konfigurasi pada faces-config.xml-nya JSF.


package mahasiswa.action;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import mahasiswa.bean.MahasiswaBean;
import mahasiswa.bean.MahasiswaRemote;
import mahasiswa.model.Mahasiswa;
/*
 * MahasiswaListAction.java
 *
 * Created on February 25, 2008, 12:31 AM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

/**
 *
 * @author JollkY
 */
public class MahasiswaListAction {
    /** Creates a new instance of MahasiswaListAction */
    private List listMhs;
    public MahasiswaListAction() {
    }

    private MahasiswaRemote lookupMahasiswaBean() {
        try {
            Context c = new InitialContext();
            return (MahasiswaRemote) c.lookup("java:comp/env/ejb/MahasiswaBean");
            //return (MahasiswaRemote) c.lookup(MahasiswaRemote.class.getName());
        }
        catch(NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE,"exception caught" ,ne);
            throw new RuntimeException(ne);
        }
    }

    public String listMahasiswa() {
        this.setListMhs(this.lookupMahasiswaBean().listMahasiswa());
        System.out.println(getListMhs().get(0).getNama());
        return "sukses";
    }

    public List getListMhs() {
        return listMhs;
    }

    public void setListMhs(List listMhs) {
        this.listMhs = listMhs;
    }

}

untuk method lookupMahasiswaBean() cukup klik kanan pada class MahasiswaListAction kemudian pilih Enterprise Resources -> Call Enterpirse Bean. Akan muncul window baru utuk memilih bean mana yang akan dipakai.Sangat mudah, jadi tidak perlu di hapal” 😈

Langkah 3:

Saya siapkan file konfigurasi jsf (faces-config.xml), sbb




<!-- =========== FULL CONFIGURATION FILE ================================== -->



        
            /pages/index.jsp
            
                sukses
                /pages/mahasiswa_list.jsp
            
        
        
            mahasiswaList
            mahasiswa.action.MahasiswaListAction
            session
        

    

Langkah 4:

Terakhir tinggal buatin halaman” jsp nya. File pertama index.jsp





    
        
        <title>JSP Page</title>
    
    
      
        
        
        
    
    


Button yang dibuat diatas akan memanggil method listMahasiswa yang ada pada bean/class yang diberi nama(pada faces-config.xml) mahasiswaList. Lihat pada file konfigurasi. Method listMahasiswa tersebut akan mengembalikan string “sukses” dimana menurut navigation rule yang ada di faces-config.xml, sbb

<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-case>
<from-outcome>sukses</from-outcome>
<to-view-id>/pages/mahasiswa_list.jsp</to-view-id>
</navigation-case>
</navigation-rule>

request/input yang berasal dari halaman /page/index.jsp akan diteruskan ke halaman /pages/mahasiswa_list.jsp, sbb







    
        
        <title>JSP Page</title>
    
    
        
            <h3>Daftar Mahasiswa</h3>

            <table>
                <tr>
                    <td>NIM</td>
                    <td>Nama</td>
                    <td>Alamat</td>
                    <td>Fakultas</td>
                </tr>
                
                    <tr>
                        <td>${mhs.nim}</td>
                        <td></td>
                        <td></td>
                        <td></td>
                    </tr>
                
            </table>

        
    


Jangan lupa untuk memasukkan library jsf pada project war dan library mysql connector pada project ejb.

Sekian… chaoo 😈

Advertisements

1 Response to “Gabungin JSF & EJB pake netbeans tinggal klak klik jadi :)”


  1. March 22, 2008 at 3:10 am

    Oh! Great job!
    Very interesting and useful post.
    Thx, your blog in my RSS reader now
    We’ll expect many new interesting posts from you 😉


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: