Contoh ini dibuat menggunakan Eclipse dengan perspective J2EE, gw menggunakan eclipse dengan tujuan mempermudah saat mem-build aplikasi, tapi kalo lo mau pake IDE lain atau bahkan dengan scratch dari notepad, mangga dipersilakan.
Pertama kita buat Stateful Bean :
package com.duniaku.stateful.test; public interface HelloStateful { public String sayHelloStateful(); public String sayHelloStatefulRemote(); public void setMember(String member); }
package com.duniaku.stateful.test; public interface HelloStatefulLocal { public String sayHelloStateful(); public String sayHelloStatefulLocal(); public void setMember(String member); }
package com.duniaku.stateful.test; public class HelloStatefulBean implements HelloStateful, HelloStatefulLocal{ private String member = "Not Set !!"; public String sayHelloStateful() { // TODO Auto-generated method stub return "Hello stateful " + member; } public String sayHelloStatefulRemote() { // TODO Auto-generated method stub return "Hello remote stateful " + member; } public void setMember(String member) { // TODO Auto-generated method stub this.member = member; } public String sayHelloStatefulLocal() { // TODO Auto-generated method stub return "Hello local stateful " + member; } }
Kemudian kita buat Untuk Stateless bean nya
package com.duniaku.stateless.test; public interface HelloStateless { public String sayHelloStateless(); public String sayHelloStatelessRemote(); public void setMember(String member); }
package com.duniaku.stateless.test; public interface HelloStatelessLocal { public String sayHelloStateless(); public String sayHelloStatelessLocal(); public void setMember(String member); }
package com.duniaku.stateless.test; public class HelloStatelessBean implements HelloStateless, HelloStatelessLocal { private String member = "Not Set !!"; public String sayHelloStateless() { // TODO Auto-generated method stub return "Hello stateless "+ member; } public String sayHelloStatelessRemote() { // TODO Auto-generated method stub return "Hello remote stateless "+ member; } public void setMember(String member) { // TODO Auto-generated method stub this.member = member; } public String sayHelloStatelessLocal() { // TODO Auto-generated method stub return "Hello local stateless "+ member; } }
Kemudian kita buat ejb-jar.xml nya
JBoss Stateless And Stateful Session Bean Tutorial JBoss Stateless And Stateful Bean Tutorial HelloStateless com.duniaku.stateless.test.HelloStatelessLocal com.duniaku.stateless.test.HelloStateless com.duniaku.stateless.test.HelloStatelessBean com.duniaku.stateless.test.HelloStatelessBean Stateless Container HelloStateful com.duniaku.stateless.test.HelloStatelessLocal com.duniaku.stateful.test.HelloStatefulLocal com.duniaku.stateful.test.HelloStateful com.duniaku.stateful.test.HelloStateful com.duniaku.stateful.test.HelloStatefulBean com.duniaku.stateful.test.HelloStatefulBean Stateful Container
Kemudian di root folder buat file jndi.properties dengan isi sebagai berikut :
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099
Kemudian build, dan buat jar file nya, caranya :
- Masuk ke command prompt - Masuk ke direktori root aplikasi - jar semua file yang ada di direktori tersebut: caranya : buat zip dari file2 yan hendak dimasukkan ke jar file tadi, kemudian setelah jadi, rename namanya menjadi .jar asalnya .zip
Kemudian simpan file jar tersebut di %JBOSS_HOME%\server\default\deploy lalu jalankan JBOSS AS lo.
Setelah itu masih di direktori yang terdapat jar tadi, jalankan clientnya dengan cara sbb :
$> java -cp TestEJBSessionBean.jar;%JBOSS_HOME%\client\jbossall-client.jar com.duniaku.stateful.test.client.Client
outputnya akan seperti ini :
Hello Stateful Not set!
Hello Stateful Initialized!
Hello Stateful Not set!
Hello Stateless Not set!
Hello Stateless Init!
Hello Stateless Init!
Kemudian jalankan client sekali lagi, dan perhatikan outputnya akan seperti ini :
Hello Stateful Not set!
Hello Stateful Initialized!
Hello Stateful Not set!
Hello Stateless Init!
Hello Stateless Init!
Hello Stateless Init!
Yang di bold di atas adalah perbedaan antara stateless dan stateful ...., perhatikan perbedaannya. Saat stateful di inisialisasi, kemudian lo buat instance baru lagi, memory akan di refresh oleh instance baru tersebut.
Tapi saat stateless yang diinisialisasi dia tetap memiliki nilai saat inisialisasi meskipun menggunakan instance yang baru. Dia baru bisa berubah menjadi uninitialized lagi saat server me refresh seluruh alokasi memori dan ini biasa terjadi + 1/2 jam sekali.
mana client-nya, Bro?
ReplyDelete