250 likes | 431 Views
Chapter 9. Adding Functionality to Your Beans [menambahkan fungsi-fungsi pada Bean] Sumber : Ed Roman, Scott Ambler, Tyler Jewell, Mastering Enterprise JavaBeans TM 2 nd. Objectives . Bagaimana memanggil Bean dari Bean yang lain
E N D
Chapter 9 Adding Functionality to Your Beans [menambahkan fungsi-fungsi pada Bean] Sumber : Ed Roman, Scott Ambler, Tyler Jewell, Mastering Enterprise JavaBeansTM 2nd .
Objectives • Bagaimana memanggil Bean dari Bean yang lain • Bagaimana menggunakan properti environment untuk memodifikasi Bean dan mengaksesnya • Bagaimana mengakses resource (seperti JDBC dan JMS) dari sebuah Bean • Bagaimana menggunakan model keamanan pada Bean • Bagaimana menggunakan EJB object dan EJB home
Memanggil Bean dari Bean yang lain • Contoh implementasi • Bean teller Bank memanggil sebuah Bean rekening nasabah • Bean konsumen memanggil Bean kartu kredit • Contoh implementasi dalam bahasan ini adalah • Mesin harga (Pricer), yang mengkalkulasi harga produk-produk termasuk properti di dalamnya, seperti diskon, pajak, dan ongkos kirim Pricing bean • Mesin katalog produk (Catalog), yang memberikan informasi produk dari database Catalog bean • Mesin harga memerlukan mesin katalog
Memanggil Bean dari Bean yang lain • Mencari homeobject dari bean lain melalui JNDI (Java Naming and Directory Interface) • Memanggil create() di homeobject • Memanggil method business pada objek EJB • Memanggil remove() di homeobject
Memanggil Bean dari Bean yang lain Contoh: // Obtain the DEFAULT JNDI initial context by calling the no // argument constructor Context ctx = newInitialcontext(); // Look up the home interface Object result = ctx.lookup(“java:comp/env/ejb/CatalogHome”); // Convert the result to the proper type, RMI-IIOP style CatalogHome home= (CatalogHome) javax.rmi.PortableRemoteObject.narrow(result, CatalogHome.class); // Create a Bean Catalog c = home.create( ... );
Memanggil Bean dari Bean yang lainEJB References • Latar belakang: pencarian dalam JNDI tidak selalu berhasil • Reference ini menggunakan semacam “nickname” yang merepresentasikan home sebuah bean • Representasi ini di-pass ke JNDI
Memanggil Bean dari Bean yang lain : EJB References;Membuat EJB References • [Source 9.1] Declaring EJB References • Nickname yang digunakan oleh Pricer untuk mencari Catalog, bukan lokasi sebenarnya pada JNDI • Local interface vs Remote interface
Resource Factories • Resource Factories penyedia sumber daya, misalnya JDBC (Java Database Connectivity), JMS (Java Message Service), JCA (J2EE Connector Architecture) • Resource Factories: pengendali yang mengontrol koneksi, misalnya JDBC yang memberikan koneksi database.
Resource Factories Menggunakan Resource Factories • Mengetahui lokasi Resource Factories –menggunakan JNDI, sama dengan mencari EJB home object [gunakan misalnya java:comp/env/jdbc/ejbPool ] • Autentifikasi pengguna ke resource - self-authentication - via deployer
Resource FactoriesContoh Deklarasi dalam Deployment Descriptor • [source 9.2]
Environment Properties • Bagaimana melakukan customization pada bean? • Customization : Pricing bean memiliki beberapa algoritma penghitungan, maka pengguna Pricing bean dapat memilih salah satunya untuk digunakan • Environment properties : properties yang memberikan spesifikasi aplikasi, dibaca oleh bean sewaktu dijalankan • Properties ini digunakan untuk customization
Environment PropertiesDeklarasi Environment Properties dalam Deployment Descriptor • [source 9.3]
Environment PropertiesContoh mengakses Environment Properties // 1 : acquire the initial context Context initCtx = new InitialContext(); // 2 : use the initial context to look up the // environment properties // String taxAlgorithm = (String) initCtx.lookup(“java:comp/env/Pricer/algorithm”); // 3 : do what you want with the properties if ( !taxAlgorithm.equals(“NoTaxes”) ) { // add text }
Keamanan pada EJB • Menambahkan properti keamanan pada enterprise bean • Dua parameter keamanan yang harus ada, di mana client harus melewatinya, • Authenticated memperoleh hak akses • Authorized memperoleh hak melakukan operasi atau perintah • Authenticated, first step, then Authorization • Menggunakan JAAS (Java Authentication and Authorization Service)
Keamanan pada EJBJAAS (Java Authentication and Authorization Service) • Portable, powerful • Dua kemungkinan pengguna JAAS, yaitu Web browser (Web-based application) dan User (standalone application) • Web browser melakukan Authentication melalui • Basic Authentication, via password & username • Form-based Authentication, basic authentication yang menggunakan customizable form • Digest Authentication, uses mathematical transformation on username & password • Certificate Authentication, via X.509 certificates
Keamanan pada EJBProsedur Authentication dalam JAAS • Client melakukan instantiate login context • Login context melakukan instantiate konfigurasi objek, mekanisme Authentication yang akan digunakan • Login context meminta pada konfigurasi objek mekanisme Authentication yang akan digunakan • Mengembalikan mekanisme Authentication sebagai login modul, bagaimana Authentication dilakukan • Login context instantiate login modul-nya
Keamanan pada EJBProsedur Authentication dalam JAAS • Login context menginisialisasi login modul • Client mencoba login dengan memanggil method login() pada login context • Login context mengirimkan login() kepada login modul, bagaimana Authentication dilakukan • Login modul melakukan Authentication melalui pemiliknya (mis. J2EE server) • Jika berhasil login modul akan commit(), jika tidak abort()
Keamanan pada EJBProsedur Authentication dalam JAAS • Subjek baru dikirim kepada client. Subjek ini adalah sesuatu yang telah authenticated. • Client instantiate aksi selanjutnya, misalnya memanggil komponen EJB • Subjek diminta melakukan aksi tersebut, via method doAs() • Subject menjalankan method run() • Aksi dikerjakan; masuk ke tahap Authorization
Keamanan pada EJBContoh Implementasi Kode JAAS • Program berikut mencoba authenticate dan memanggil method “HelloWord” pada bean. • HelloClient.java • PasswordConfig.java • PasswordLoginModule.java • CallHelloWord.java
Keamanan pada EJBAuthorization • Diperlukan sebelum bisa memanggil method-method dalam beans • Dua cara melakukan authorization : • Programmatic authorization, dicek dalam kode bean • Declarative authorization, container yang melakukan semua pengecekan • Security Roles
Keamanan pada EJB: Authorization Programmatic authorization steps • Write the programmatic security logic • Declare the abstract security roles your bean uses • Map abstract roles to actual roles Declarative authorization steps • Declare method permissions • Declare security roles
Keamanan pada EJB: Authorization Programmatic or Declarative? • Declarative memisahkan bean dari kebijakan (policy) keamanan tertentu, sehingga bean lebih sederhana dan variasi kebijakan (policy). • Tetapi EJB belum menyediakan cukup fasilitas untuk itu. • Programmatic bisa mencukupi untuk digunakan.
Handles • Aplikasi EJB kadang meminta pemutusan dan penyambungan kembali koneksi ke Beans. • Object handles , proxy untuk objek EJB yang long-live • Object handlesdigunakan dalam koneksi kembali agar informasi atau status tidak hilang atau dapat dilanjutkan kembali • Home handles adalah varian dari EJB object handles. • Home handles dapat menunjuk ke sebuah home object, dan dapat menggunakannya kembali tanpa mengetahui lokasi JNDI dari home object.