Tuesday, April 07, 2009

EJB bikin bingung

Udah lama gw dah ga pake ejb lagi, dulu pake netbean 5.0 yang gw pake. Sekarang udah keluar versi baru,
kalo ga salah 6.5 tapi denger-denger versi 7.0 beta udah ada. Karena gw ingin mereview lagi J2EE,
maka download file netbean versi 6.1 yang gw download dari www.sun.com

Akhirnya gw makin bingun ketika gw liat sample disitus sun.com bahwa untuk membuat file ejb tidak perlu 3 file lagi.
cukup dua file java yaitu java interface sama java imlements.
seperti ini contohnya


(interface)

package contoh.bean;
import javax.ejb.Remote;

@Remote
public interface contohEjb {
String cetak(String name);
}

(implementation)

package contoh.bean;
import javax.ejb.Stateless;

@Stateless( name="contohEjb")
public class contohBean implements contohEjb {
public contohBean() {}

public String cetak(String ctk) {
return "Selamat, Anda berhasil mencetak " + ctk;
}
}

(aplikasi client)

package contoh.bean;
import javax.ejb.EJB;

public class AppClient {

@EJB
private static contohEjb cEjb;

public static void main(String args[]) {
System.out.println("Hasil bean : " + cEjb.cetak("Anton"));

}
}



hal ini sangat berbeda waktu menggunakan EJB versi lama yang kurang lebih seprti ini bentuknya

(interface)

package contoh.bean;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;


public interface contohEjb extends EJBObject {
public String cetak() throws RemoteException;
}


(implementation)

package contoh.bean;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;


public interface contohHome extends EJBHome {
cetak create() throws RemoteException, CreateException;
}

(file Bean)

package contoh.bean;

import javax.naming.*;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.rmi.PortableRemoteObject;
import java.rmi.RemoteException;


public class contohBean implements SessionBean {

public contohBean() {
}

public String cetak(String ctk) throws RemoteException {

Context env = null;
try {
env = getEnv();
} catch (Exception ex) {
}
String ctk = "Selamat, Anda berhasil mencetak " + ctk;
return ctk;
}

private Context getEnv() throws Exception {
Context initial = null;
try {
initial = new InitialContext();
} catch (NamingException ex) {
throw new Exception(ex.getMessage());
}
Context env = null;
try {
env = (Context) initial.lookup("java:comp/env");
} catch (NamingException ex) {
throw new Exception(ex.getMessage());
}
return env;
}

public void ejbCreate() {
}

public void ejbRemove() {
}

public void ejbActivate() {
}

public void ejbPassivate() {
}

public void setSessionContext(SessionContext sc) {
}
}


(applikasi client)

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

public class contohClient {

public static void main(String[] args) {

try {
Context initial = new InitialContext();
Object objref = initial.lookup
("java:comp/env/ejb/contohBean");

contohHome home =
(contohHome)PortableRemoteObject.narrow(objref,contohHome.class);
contohEjb percetakan = home.create();

String ctk = percetakan.cerak("Anton");
System.out.println(ctk);

System.exit(0);

} catch (Exception ex) {
System.err.println("Tidak tau errornya!");
ex.printStackTrace();
}
}
}


itu seh baru perkiraan dari gw karena gw baru mempelajari lagi. jelas cara yang sekarang lebih mudah dari pada yang lama.
bener ga ya referensi gw ini, karena dari beberapa referensi yang gw baca seperti itu.

smoga bermanfaat, jika ada kesalahan mohon di beri komentar untuk saling berbagi.

No comments:

Post a Comment