Posts filed under 'SCBCD 5'

Objective 3, Session Bean bagian 2

Bagi client, session object adalah non-persistent object yang mengimplement bisnis logic dalam server. Dengan kata lain sesion object logical extention bagi program client yang berjalan di dalam server. Session object tidak di share antara client satu dengan yang lain (jika clientnya lebih dari satu).

Sesuai namanya SFSB (Statefull Session Bean), mempertahan state-nya untuk sebuah session dan tidak akan di share yang berbeda dengan SLSB (Stateless Session Bean) yang disimpan dalam pool.

Setelah kita menyentuh bagaimana permukaan session bean dalam EJB pada bagian pertama, coba kita lebih dalam lagi pada bagian ini  mengenai Lifecyclenya.

SFSB  memiliki callback interceptor method PostConstruct, PreDestroy, PrePassivate,  dan PostActivate. Ketiga lifecycle callback interceptor methods dapat digunakan oleh SFSB, sedangkan untuk SLSB PostConstruct dan PreDestroy, dan jikalaupun ada kedua callbacak interceptor method (PoastActivate dan PrePassivate) di SLSB, maka callback ini akan diabaikan.

Sekali lagiPrepassivate dan PostActivate khusus hanya untuk SFSB.!

sesuai namanya, method-method callback tersebut akan digunakan (invoked)

PostConstruct akan dipanggil sesaat setelah di buat objectnya dan sebelum ada bisnis method yang dipanggil.

PreDestroy akan dipanggil sesaat sebelum object tersebut diclaim oleh GC atau dihancurkan

PrePassivate dipanggil sesaat sebelum SFSB memasuki phase passive (ingat, yang memanage lifecycle SFSB adalah bean container)

dan PostActivate dipanggil sesaat setelah diaktifkan kembali dan sebelum method yang lainnya dipanggil.

Add comment February 18, 2009

Enviroment Setup EJB3 dengan JBOSS

Sebelum menyiapkan environment untuk coding, dipastikan JDK 1.5 sudah terinstall dan sudah ditambahkan path JAVA_HOME. Setiap web/aplication server akan mencari path JAVA_HOME ini. Selnajut dapat diikuti langkah-langkah selanjutnya.

Langkah-langkah untuk menyiapkan environtment untuk coding EJB 3 adalah sebagai berikut;

1. Siapkan  Application Server yang akan digunakan, dalam kasus ini saya menggunakan JBOSS versi 4.0.5 dengan menggunakan jems-installer. Kemudian file jar tersebut dapat dieksekusi dengan command

C:\java -jar jems-installer-1.2.0.BETA3

Bagian penting saat install JBOSS adalah saat memilih profile, pilih EJB profile bukan yang lainnya.

Jems_Installer_Profile

2. Install IDE Eclipse, pada kasus ini saya menggunakan eclipse Release 3.2  dengan plugin eclipse jboss plugin. JBoss  eclipse dapat didownload dari  sini, Eclipse IDEnya sendiri dapat di download dari sini .

Referensi

http://java.boot.by/scbcd5-guide/index.html

Add comment February 9, 2009

Objective 3, Statefull Session Bean bagian 1

Dalam SCBCD, dituntut pengetahuan bagaimana sifat2 Statefull Session Bean (SFSB), life cycle dari SFSB dan callback dari interceptor.
Kapan dan bagaimana digunakan, bisa di baca ditutorial lain. Kita fokus pada SFSB itu sendiri bagaimana:

Saat Statefull Bean dieksekusi oleh pengguna nya (client), yang dipanggil adalah bisnis interface reference dari dari EJB Container oleh lookup JNDI,bukan object nya itu sendiri.

Dan berikut adalah interface contoh yang akan kita gunakan dan Session Bean mengimplement interface ini:

package by.iba.ejb;
import javax.ejb.Remote;
@Remote
public interface StatefulCalculator {

    public double add(double a);
    public double subtract(double a);
    public double multiply(double a);
    public double divide(double a);
    public void clean();

    public void turnOff();

}

Bisnis method,dalam hal ini Bean Calculator memiliki beberapa bisnis method yang dapat dipanggil oleh client,
add(double a); subtract(double a); multiply(double a); divide(double a);clean(); turnOff();
method ini sebelumnya di define di interface yang sudah diannotate @Remote atau @Lokal dan di over ride oleh bean dimana bisnis kita taruh.
Lebih lengkapnya sebagai berikut.

package by.iba.ejb;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.EJB;
import javax.ejb.Remove;
import javax.ejb.Stateful;

@Stateful
public  class StatefulCalculatorBean implements StatefulCalculator {

    @EJB private StatelessCalculator calculator;

    double register = 0;

    public double add(double a) {
        register = calculator.add(register, a);
        return register;
    }

    public double subtract(double a) {
        register = calculator.subtract(register, a);
        return register;
    }

    public double multiply(double a) {
        register = calculator.multiply(register, a);
        return register;
    }

    public double divide(double a) {
        register = calculator.divide(register, a);
        return register;
    }

    public void clean() {
        register = 0;
    }

    @Remove
    public void turnOff() {
        System.out.println("[StatefulCalculatorBean] Good bye ! I gotta split !");
    }

    @SuppressWarnings("unused")
    @PostConstruct
    private void afterCreated() {
        System.out.println("[StatefulCalculatorBean] PostConstruct callback !");
    }

    @SuppressWarnings("unused")
    @PreDestroy
    private void beforeRemoved() {
        System.out.println("[StatefulCalculatorBean] PreDestroy callback !");
    }
}

Dengan sebuah interface dan sebuah class yang telah diannotate seperti diatas, kita sudha bisa menggunakan dan mendeploy EJB componen tersebut dalam Aplictaion server yang telah kita sediakan. Untuk menguji apakah EJB SFSB kita dapat berjalan atau tidak, kita bisa menggunakan main class application seperti dibawah ini :

package by.iba.client;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

import by.iba.ejb.StatelessCalculator;

public class CalculatorClient {

    public static void main(String[] args) {
        try {
            Context jndiContext = new InitialContext();
            Object ref = jndiContext.lookup("StatelessCalculatorBean/remote");
            StatelessCalculator calc = (StatelessCalculator) PortableRemoteObject
                    .narrow(ref, StatelessCalculator.class);

            System.out.println("4 + 3 = " + calc.add(4,3));
            System.out.println("4 - 3 = " + calc.subtract(4,3));
            System.out.println("4 * 3 = " + calc.multiply(4,3));
            System.out.println("4 / 3 = " + calc.divide(4,3));

        } catch (NamingException ne) {
            ne.printStackTrace();
        }
    }
}

Reference
http://java.boot.by/scbcd5-guide/

Add comment February 6, 2009

Exception EJB 3 dan Transaction,

Exception dalam lingkup EJB 3 di bagi menjadi 2; Aplication Exception dan System Exception. Yang masuk dalam katagori aplication exception adalah exception-exception yang terjadi terkait dengan bussines logic, contohnya adalah exception yang terjadi karena jumlah pembayaran lebih besar dibandingkan account balance client.System Exception sendiri terkait dengan exception yang terjadi karena system, seperti koneksi database yang tidak tersedia.

System exception secara otomotis transaction di roll back, sedangkan aplication exception mesti di tentukan tingkah lakunya, apakah akan di rollback atau tidak.

Add comment March 14, 2008

Entity Bean of EJB 3

The taste of beans in EJB are Session, Entity and Message driven Bean. Entity Bean is persistent. Persistent means being written the hard disk or another kind storage media. Entity bean is close to Database, what we create it and make it persist just like insert into database.

EJB 3 used annotation feature that belong to java 5 or above. Entity Bean 3 is simpler then EJB 2. Before EJB 3, developver have to declare all setting in xml file, to map the entity and the table is teh example. Also required extends EJBObject and create interfaces for all of them.

Now it is simpler for developer. Just create PAJO(Plain Annotation Java Object) , then add @Entity above of the class.

example
@Entity
public class Customer implements Serializable{
@Id
private Long myID;
private String name;
private String address;
:
:

}
The three member variable of Customer is mapped as the field of Customer Table by default. The name of the table, if not declared @Table(name=”" ),will use Class name, in this case Customer table. Don’t forget to add setter and getter for each member variable.

Implement serializable why? now we’re working in many JVM or client and server is separated. then we cannt use passing by reference anymore. Object is passing by value and remote client can have object that exactly same as in the container.

1 comment April 25, 2007

SFSB alias Statefull Bean Error in JDK 6

The way is not smooth as I imagine before. I was imagine EJB 3 is easier then EJB 2. After trying some simple code for Stateles Bean and Entity Bean, then I try Stateful Bean. SLSB and Entity bean has no big deal to try, but when I try SLSB in the same environment, I got error.

I used java jdk 1.6 and JBoss 4.05. I just down load sample code of stateless, statefull and entity bean and try to deploy and run it. Stateless and entity bean is ok as I expected, but for stateful has a problem with class loader. Then i try to search by googling and I found this thread in forum of JBoss.

Then I changed my environment, switch to Tiger (jdk 5) again, and its work as I expected. Its also work in JBoss 4.0.4 and used jems.installer with ejb feature.

Welcome and go for the next step :)

Mujoko

Add comment April 19, 2007

Link for SCBCD 5 (EJB 3) exam preparation

There is not many resources to read or to have an exercise in SCBDC 5. But I just found some link that may this usefull for us, also for me :)

1. http://www.nycjava.net

2. http://java.boot.by/

3. http://dev2dev.bea/

4. http://today.java.net/

5. http://www.javaworld.com/

6 http://www.netbeans.org/kb/55/ejb30.html tambahan dari ifnu

7 http://j2ee.netbeans.org/NetBeans_EJB3.html tambahan dari ifnu

And I think Objective of exam is quite important as well, you can download here Objective .
anyone who wanna share another links probably?

Mujoko

Add comment April 16, 2007


RSS SmartPhone

RSS Android

RSS Digg

Archives

Blog Stats

Meta

Visitors to this site

Blogroll

Friends