15
Resume HF EJB : Chapter II ZAINAL BUCHORI (201110370311260) ARIEF PURNAMA ADJI (201110370311251) KHOIRUL HIDAYAT (201110370311284) M. ARIF ARIO ISLAM (201110370311261) UNIVERSITAS MUHAMMADIYAH MALANG

chapter 2.docx

Embed Size (px)

DESCRIPTION

chapter 2.docx

Citation preview

ZAINAL BUCHORI(201110370311260)

ARIEF PURNAMA ADJI (201110370311251) KHOIRUL HIDAYAT(201110370311284)

M. ARIF ARIO ISLAM (201110370311261)

UNIVERSITAS MUHAMMADIYAH MALANG

Arsitektur EJB 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.

Konsep EJB terletak di container. Selebihnya EJB dibangun dari plain Java, kumpulan dari library (bean) yang menurut Sun dibutuhkan untuk aplikasi enterprise saat ini. Konsep bean sudah ada di Java SE atau secara konsep bahkan sebelum Java. Inti dari bean cukup sederhana yaitu objek yang di rancang untuk reusability.

Perbedaan EJB dgn bean terletak di container, yang sebenarnya adalah layer sekaligus abstraksi tambahan yang di definisikan oleh Sun. Tujuan EJB adalah mendefinisikan sebuah standar bagi para developer untuk membuat bean yang capable untuk sistem enterprise.

Kebutuhan enterprise (saat ini) antara lain: remote invocation, scalability, manageable.

Implementasi remoting sudah ada dari sebelum EJB misal dari socket, CORBA, RMI, sampai WS. Konsep scalability misalkan: clustering, thread pooling, dsb. Jadi sebenarnya developer bisa saja (dan tetap reasonable utk beberapa kasus) mengimplementasikan kebutuhannya tanpa EJB. Namun di sinilah peranan EJB sebagai framework yang standar (dan juga framework yang lain), memudahkan (simplifikasi) developer untuk mengembangkan aplikasi.

Dengan container, bean dapat berinteraksi satu sama lain tanpa harus tahu secara spesifik implementasi antar bean (abstraksi).JVM sendiri sebenarnya adalah sebuah container. Dengan JVM, objek akan dapat berjalan di beberapa OS tanpa perubahan kode. EJB dibangun di atas JVM, jadi EJB sebenarnya adalah kumpulan objek di atas JVM, jadi wajar

EJB bisa berkomunikasi dengan EJB lain di beda JVM selama

JVM tersebut kompatibel.

EJB adalah salah satu framework Java, dan framework hanya memfasilitasi kita melakukan pengembangan software. Apakah kita memilih CORBA, WS, RMI, Plain Socket,dll.. menurut saya itu seharusnya sudah ada di luar scope EJB sebagai framework.

Dan satu lagi, EJB adalah sebuah produk, EJB dibentuk dari konsep yang sudah ada dan dipakai sebelumnya. Contohnya implementasi AOP pada EJB, sebenarnya sebelum EJB, AOP sudah digunakan secara luas (AspectJ). JPA (Java Persistence API), spesifikasi objek persisten pada EJB dibangun dengan mengadopsi Hibernate (Open source ORM).

RMI adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.

Aplikasi RMI seringkali terdiri dari dua program terpisah yaitu server dan client. Aplikasi server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client memanggil method dari objek-objek remote tersebut. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.

RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik. Aplikasi semacam ini seringkali disebut aplikasi objek terdistribusi.

Remote Method Invocation adalah teknologi remoting berbasis Java yang memungkinkan 2 buah aplikasi yang berjalan diatas JVM (Java Virtual Machine) yang berbeda dapat saling berkomunikasi. Dengan RMI sebuah objek dapat meng-invoke/memanggil sebuah method dari remote objek.

RMI adalah sebuah teknik pemanggilan method remote yang lebih secara umum lebih baik daripada RPC. RMI menggunakan paradigma pemrograman berorientasi obyek (Object Oriented Programming). RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.

Membangun suatu aplikasi terdistribusi menggunakan RMI meliputi 6 langkah. Keenam langkah tersebut adalah:1. Mendefinisikan remote interface

2. Implementasi remote interface dan server

3. Pengembangan client (atau applet) yang menggunakan remote interface

4. Mengkompilasi source files dan mem-buat stub and skeletons

5. Memulai (start) RMI registry

6. Menjalankan server dan client

RMI Sublayer terdiri dari– Proxy (di client), tempat penyimpan lokal untuk remote objek

– Dispatcher (di server), menerima request dan menggunakan methodID untuk memilih message di skeleton

– Skeleton (di server), menerapkan method dalam remote interface

JVM (Java Virtual Machine) adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi hardware dan platform dimana kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM.

Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah server harus menyediakan layanan remote procedure. Pendekatan yang dilakuan adalah sebuah server membuka socket, lalu menunggu client yang meminta prosedur yang disediakan oleh server. Bila client tidak tahu harus menghubungi port yang mana, client bisa me- request kepada sebuah matchmaker pada sebuah RPC port yang tetap. Matchmaker akan memberikan port apa yang digunakan oleh prosedur yang diminta client.

RPC masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure. RPC menggunakan socket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC secara default sudah ter- install kedalam sistemnya,

Untuk proses nya kurang lebih sama dengan RMI. Kalau RMI kita mengenal proxy dan skeleton, pada RPC dikenal dengan Stub ( Client stub dan Server stub)

Argumen dan nilai kembalian Primitif Serializable Objek Sebuah Array atau koleksi primitif atau Serializable objek Remote Objek

Melewatkan remote objek melalui method remote

RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote

obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan. Aplikasi RMI seringkali terdiri dari dua program terpisah yaitu server dan client. Aplikasi server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client menginvoke/memanggil method dari objek-objek remote tersebut. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik.

Session Bean dapat menjadi staless atau statefull

Salah satu perbedaan mendasarnya adalah jika stateful digunakan untuk layanan yang memerlukan informasi yang disimpan selama klien berinteraksi dengan aplikasi, tidak hanya untuk pemanggilan satu method saja, misalnya untuk shopping cart, entry data di lebih dari satu halaman dll. Dan begitu pula sebaliknya dengan stateless dia menghapus informasi selama klien berinteraksi.

Ketika nilai kembalian adalah remote objek

Penjelasan gambar diatas adalah client ingin memanggil method getCstomer() pada remote objek menggunakan stb A maka client menyampaikan pesan ke stub A selanjutnya stub A menyampaikan ke skel dan skel melanjtkan ke Remote objek A.

Penjelasan dari gambar diatas adalah remote objek mengembalikan nilai ke customer objek (Remote objek B) melalui skelton diterskan ke stub dan dikembalikan ke client.

POIN PENTING

1. EJB menggunakan RMI bean sehingga dapat diakses oleh remote client.2. Remote client pada conteks ini adalah objek yang berada pada JVM yang

berbeda, bisa disebut juga di heap yang berbeda.3. Stub objek menangani jaringan level ringan pada saat komunikasi dengan

remote objek.4. Remote objek berada pada heapnya sendiri, ketika client memanggil method

pada proxy remote objek, maka yang dipanggil adalah stub.5. Ketika client ingin memanggil method pada remote objek, client memanggil

method yang sama pada stub. Stub berada pada heap yang sama sebagai client.

6. Untuk client, remote method call identik dengan lokal method call, kecuali menggunakan exception handling.

7. Argumen dan nilai kembalian harus memenuhi salah satu persyaratan : primitif, serializable objek, array atau koleksi primitif, atau serializable objek, atau remote objek. Jika nilai tidak ada satupun syarat diatas maka akan dihasilkan runtime exception.

8. Jika sebuah objek adalah argument atau nilai kembalian, objek mengirim serialized copy, kemudian di deserialized pada remote objek lokal heap.

9. Jika remote objek sebagai argumen atau nilai nilai kembalian , objek stub mengirim instead.

Apa yang harus dimiliki Remote objek dan stub pada umumnya

Bagaimana client tahu method mana yang akan dipanggil?

Bagaimana stub tahu method mana yang mempunya remote objek?

Jawabannya adalah dengan menggunakan Remote interface. Keduanya, Remote objek dan stub diimplementasikan pada interface yang sama. Salah satu dengan menggunakan method yang akan dipanggil client. Remote interface harus extend java.rmi.Remote dan setiap method harus dideklarasikan remoteException. Contohnya sebagai berikut :

Client memanggil business method pada stub melalui Remote business interface

Client tidak bisa langsung memanggil method pada remote objek harus melalui Remote interface.

Remote objek bukan bean melainkan hanya bodyguard bean

Pada EJB Remote objek adalah bodyguard bean. Pada dasarnya client tidak bisa langsung memanggil bean untuk keperluan transaksi dll. EJB Objek melakukan semacam proses keamanan diantaranya authorisasi misal apakah client ini terverifikasi untuk memanggil method ini. Untuk lebih jelasnya lihat gambar berikut :

Komponen Interface

Pada EJB, bisnis interface disebut komponen interface. Perbedaan utama antara RMI interfac dengan remote komponen interface adalah bahwa dengan EJB kita bisa extend javax.ejb.EJBOBject dan sebaliknya RMI java.rmi.Remote.

Poin penting

1. Interface dengan java.rmi.Remote pada inherntence tree adalah Remote interface.

2. Interface EJBObjek extend Remote,sehingga EJBObjek adalah Remote interface.

3. Remote komponen interface harus extend EJBObjek interface.

4. Menampilkan business method ke client melalui komponen interface.

5. Interface EJBObjek menambahkan method tambahan untuk digunakan client.

Penyesuaian kelas bean

Gambaran arsitektur Session beans

Klien berbagi Home object , tapi tidak dengan komponen. Setiap klien mendapat

refrensi EJBObject sendiri dan komponen sendiri. Klien tidak berbagi komponen

dengan klien yang lain. Hanya ada satu HomeObject untuk jenis komponen

tertentu (misalnya, MviceBean), sehingga kedua klien memiliki home yang sama.

Kedua klien meminta saran pada home yang sama untuk referensi ke sebuah

komponen, akan tetapi klien tidak mendapat referensi ke instance Komponen,

melainkan mendapat referensi ke EJBObject.

Gambaran arsitektur: Entity Beans

Klien berbagi Home, dan dapat berbagi Komponens.

Setiap klien memiliki referensi sendiri pada satu-satunya Home untuk Komponen

ini (katakanlah, CustomerBean). Tapi, jika dua klien mencoba untuk mengakses

Pelanggan yang sama(misal Fred Smith) , maka kedua klien memiliki reference ke

EJBObject yang sama.. Dalam kata lain, EJBObject adalah pengawal untuk

Pelanggan tertentu . Jika semua klien mencoba untuk mengakses Fred Smith ,

masing-masing mereka memiliki rintisan mereka sendiri, tapi semua stub akan

berkomunikasi dengan Remote EJBObject yang sama. Dan hanya akan ada satu

komponen yang mewakili Fred Smith . Jika klien ingin mengakses dua pelanggan

yang berbeda, klien akan memiliki dua stub, dan akan memiliki dua EJBObjects

yang berbeda, satu untuk setiap pelanggan. Dan itu juga berarti dua komponen

yang berbeda.

Architectural overview:

Creating a Stateful Session bean

Setelah mendapatkan Home stub, klien memanggil untuk "menciptakan" pada

Home . Home menciptakan komponen dan Object EJB untuk komponen dan stub

EJBobject.

1. Klient memanggil method create() pada home stub (creatae adalah method pada interface home)

2. Stub mengrim method create pada home3. Selanjutnya home kontainer menambah layanannya4. EjbObject telah dibuat untuk klient5. Bean tetap di bean pool ! dy keluar hanya untuk melayani sebuah busines

mehod sebenarnya, jika clien yang memanggil satu di EJBObject stub6. EJBObject stub kembali pada klien, jadi klien dapat memanggil bisnis

method pada komponen interface.

Stateless session beans are more scalable

Klien tidakdapt berbagi EJBObjects, namun bean yang sama dapat melayani

beberapa EJBObjects. Hanya saja tidak pada waktu yang sama. Sebuah bean

tunggal dapat menangani beberapa klien, selama hanya satu klien pada suatu

waktu berada di tengah-tengah metode bisnis.

Gambaran arsitektur: Message driven beans

Message driven beans tidak memiliki tampilan klien. Itu berarti mereka tidak

memiliki antarmuka (Remote atau lokal) yang mengekspos metode untuk klien.

Dengan kata lain, Message driven beans tidak memiliki Home atau EJBObject.

Mereka tidak memiliki antarmuka Awal atau antarmuka Komponen.