Rabu, 27 Februari 2013


PENGERTIAN JAVA BEAN


1. Apakah Enterprise Java Bean itu?
Secara singkat Enterprise Java Bean merupakan komponen software server-side yang menyederhanakan proses pembuatan komponen aplikasi terdistribusi untuk skala enterprise. Pada dasarnya Enterprise Java Bean bukanlah merupakan suatu produk jadi tetapi merupakan spesifikasi atau blueprint teknologi untuk komponen software yang menjadi bagian dari teknologi J2EE.
Menurut Sun Microsystem definisi EJB adalah:
“Aristektur Enterprise JavaBeans adalah arsitektur komponen untuk development dan deployment dari aplikasi bisnis terdistribusi berbasis komponen. Aplikasi yang dibuat dengan artistektur Enterprise JavaBeans adalah skalabel, transaksional, dan multiuser yang aman. Aplikasi-aplikasi ini mungkin ditulis sekali dan dideploy pada berbagai platform server yang mendukung spesifikasi Enterprise JavaBeans.”

2. Latar Belakang EJB
Berangkat dari kebutuhan aplikasi berskala enterprise yang mendayagunakan sistem terdistribusi dengan banyak user atau pengguna dalam suatu saat maka lahirlah EJB.
Sebelum adanya spesifikasi EJB, perusahaan seringkali membangun middleware sendiri di mana proses development untuk middleware sangatlah kompleks karena harus memperhatikan berbagai aspek, seperti transaksi, mekanisme penyimpanan data persisten, sinkronisasi, resource polling, networking, dan sebagainya. Aplikasi yang berjalan pada middleware harus memanggil API yang diperlukan secara eksplisit apabila ingin mengatur transaksi, menyimpan data, melakukan resource polling, dsb.
Tentu hal ini menyulitkan developer dalam menghasilkan aplikasi bisnis yang berjalan di atas middleware. Terlebih lagi tidak adanya standar atau spesifikasi global sehingga API dari suatu middleware tidaklah sama atau mungkin tidak tersedia pada middleware lain.
Middleware menyediakan service seperti berikut:
  1. Remote Method Invocation
  2. Load Balancing
  3. Transparent fail-over
  4. Integrasi Back-end
  5. Transaksi
  6. Clustering
  7. Dynamic redeployment
  8. Clean shutdown
  9. Logging dan auditing
  10. Manajemen Sistem
  11. Threading
  12. Message-oriented middleware
  13. Siklus hidup objek
  14. Resource polling
  15. Security
  16. Caching
  17. dll
Oleh karena banyaknya hal dan masalah yang harus dapat dilayani oleh suatu middleware untuk aplikasi berskala enterprise maka Sun Microsystem mendefinisikan suatu spesifikasi di mana suatu aplikasi yang memenuhi spesifikasi tersebut dapat dibuat tanpa harus menuliskan kode program secara eksplisit untuk menangani berbagai hal terkait dengan kemampuan yang disediakan middleware karena aplikasi dengan arsitektur EJB dapat mendayagunakan berbagai fungsi middleware yang dimanajemen oleh application server secara otomatis. Jadi dalam aplikasi yang menggunakan EJB kita akan memerlukan software khusus yang berjalan di server yang sering disebut application server di mana application serverlah yang menyediakan berbagai fungsi dan layanan middleware.
3. Kelebihan EJB
EJB memiliki kelebihan-kelebihan sebagai berikut:
•  Teknologi EJB merupakan standar teknologi dan spesifikasi yang telah disetujui oleh industri dunia. Oleh karena itu hal ini sangat menguntungkan berbagai industri terkait, baik yang mendayagunakan EJB maupun vendor yang menyediakan jasa development atau tool pendukung EJB
•  Portabilitas yang tinggi. Spesifikasi EJB dipublikasikan secara umum dan tersedia gratis sehingga banyak vendor yang mengerti arsitektur EJB dengan baik dan akibatnya memunculkan banyak vendor application server untuk EJB maupun developer aplikasi EJB.
•  Rapid application development. Aplikasi dapat dibuat lebih cepat karena layanan atau kemampuan middleware yang rumit dapat diperoleh dari application server.
4. Macam EJB
Enterprise Java Bean terdiri dari 3 macam yaitu:
•  Sesson Beans
Session Bean digunakan untuk memodelkan proses bisnis atau merupakan logik bisnis dari aplikasi. Proses yang dapat dilayani Session Bean misalnya: mendapatkan harga barang tertentu, merubah harga barang, dll.
•  Entity Beans
Entity Beans digunakan untuk memodelkan data bisnis. Apabila diistilahkan dalam kata-kata maka Entity Beans bersifat kebendaan, lain halnya dengan Session Beans yang bersifat suatu pekerjaan atau aksi.
•  Message-driven Beans
Message Driven Beans adalah hampir sama dengan Session Beans dalam sudut pandang fungsi yaitu melakukan proses bisnis atau sebagai logik bisnis. Hanya saja perbedaaanya adalah message-driven beans dijalan atau dieksekusi dengan menyampaikan “message” ke bean tersebut.

JavaBeans pada awalnya dimaksudkan sebagai komponen visual untuk membuat aplikasi GUI. Sekarang ini Javabeans meluas dan dipakai untuk seluruh lingkungan pemrograman Java, termasuk JSP (Java Server pages) dan EJB (Enterprise Java Beans). Dalam pemakaian aplikasi Web seperti JSP dan EJB, kita tidak memakai komponen JavaBeans visual yang memakai komponen GUI dan AWT; melainkan kita memakai JavaBeans non-visual [WIJ06].
Pada Dasarnya JavaBeans dapat dibuat dengan cara yang sama dengan pembuatan class Java standar, tetapi kelas Java Beans memiliki beberapa kententuan berikut ini:
  1. Class tersebut harus memiliki satu buah konstruktor yang tidak memakai argument.
  2. Setiap property dari JavaBeans yang akan diakses oleh public harus memiliki metode khusus untuk menentukan nilainya (metode setter), dan metode khusus untuk mengambil nilainya (metode getter).
Kalau dilihat dari penjelasan di atas, Java Beans adalah sebuah cara untuk membuatkan objek dari kelas yang dimaksud. Namun objek ini tidak langsung “frontal” dituliskan dalam halaman JSP-nya. Frontal di sini adalah dengan menggunakan sintaks “new” pada halaman JSP-nya, tetapi ada sintaks khusus untuk menggunakan sebuah instansiasi Objek JavaBeans-nya. Untuk lebih jelasnya dapat dilihat pada tampilan selanjutnya mengenai sintaks-sintaks JavaBeans.


INDEX .JSP

<%--
    Document   : index
    Created on : 27 Feb 13, 15:50:08
    Author     : Wiguno
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>setProperty</TITLE>
</HEAD>
<BODY>
<TABLE BORDER=5 ALIGN="CENTER">
<TR><TH CLASS="TITLE">
QienzRoman</TABLE>
<jsp:useBean id="entry" class="bean.Sel" />
<jsp:setProperty
name="entry"
property="itemID"
param="itemID" />
<jsp:setProperty
name="entry"
property="numItems"
param="numItems" />
<%-- WARNING! JDK 1.0.1 dan Java Web Server
mempunyai bug yang menyebabkan kegagalan
konversi tipe data
--%>
<jsp:setProperty
name="entry"
property="discountCode"
param="discountCode" />
<BR>
<TABLE ALIGN="CENTER" BORDER=1>
<TR CLASS="COLORED">
<TH>Item ID<TH>Unit Price<TH>Number Ordered<TH>Total Price
<TR ALIGN="RIGHT">
<TD><jsp:getProperty name="entry" property="itemID" />
<TD>$<jsp:getProperty name="entry" property="itemCost" />
<TD><jsp:getProperty name="entry" property="numItems" />
<TD>$<jsp:getProperty name="entry" property="totalCost" />
</TABLE>
</BODY>

Sel.java


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bean;

import javax.ejb.Stateless;


/**

 *
 * @author tohid  */
@Stateless
public class Sel {
    private String itemID = "unknown";
    private double discountCode = 1.0;
    private int numItems = 0;
    public String getItemID() {
        return (itemID);
    }
    public void setItemID(String itemID) {
        if (itemID != null) {
            this.itemID = itemID;
        } else {
            this.itemID = "unknown";
        }
    }
    public double getDiscountCode() {
        return (discountCode);
    }
    public void setDiscountCode(double discountCode) {
        this.discountCode = discountCode;
    }
    public int getNumItems() {
        return (numItems);
    }
    public void setNumItems(int numItems) {
        this.numItems = numItems;
    }
// Replace this with real database lookup.
    public double getItemCost() {
        double cost;
        if (itemID.equals("a1234")) {
            cost = 12.99 * getDiscountCode();
        } else {
            cost = -9999;
        }
        return (roundToPennies(cost));
    }
    private double roundToPennies(double cost) {
        return (Math.floor(cost * 100) / 100.0);
    }
    public double getTotalCost() {
        return (getItemCost() * getNumItems());
    }
}

Tidak ada komentar:

Posting Komentar