Laman

Pembuatan CORBA (Common Object Request Broker Architecture)

1   komentar


1.   Definisi

Object Request Broker Architecture (CORBA) merupakan sebuah arsitektur software yang berbasis pada teknologi berorientasi obyek atau Object Oriented (OO) dengan paradigma client-server. Dalam terminologi OO, sebuah obyek berkomunikasi dengan obyek lain dengan cara pengiriman pesan (message passing). Konteks komunikasi ini kemudian dipetakan ke dalam model client-server: satu obyek berperan sebagai client (si pengirim pesan) dan yang lain bertindak sebagai server (yang menerima pesan dan memroses pesan yang bersangkutan).

2.        Kenapa Corba
Karena corba dapat meng-automatisasi tugas-tugas yang umum dalam pemrograman jaringan, seperti object registration, location dan activation; framing dan error-handling; parameter marshaling dan un-marshaling; dan operation dispatching. Automatisasi ini biasa dihandle oleh sebuah software perantara yang disebut ORB (Object Request Broker). Posisinya berada di antara layer data dan aplikasi.
3.        Arsitektur Software Berbasis Corba
CORBA (Common Object Request Broker Architecture) merupakan suatu spesifikasi yang dikembangkan oleh OMG (Object Management Group), sebuah konsorsium yang terdiri lebih dari 800 perusahaan. Tujuan CORBA adalah untuk pengembangan pemrograman objek terdistribusi. CORBA bukanlah bahasa pemrograman, tapi merupakan spesifikasi untuk mengembangkan objek-objek terdistribusi. Beberapa software yang mengimplementasikan COBA misalnya ORBIX (oleh IONA Technologies), VisiBroker (oleh Insprise), dan JavaIDL (oleh JavaSoft).
CORBA memiliki arsitektur yang berbasiskan model objek. Model ini diturunkan dari abstrak Core Object Model yang didefiniskan OMG di dalam OMA (Object Management Architecture). Model ini merupakan gambaran abstrak yang tidak dapat diimplementasikan tanpa menggunakan teknologi tertentu. Dengan model tersebut, suatu aplikasi dibangun dengan standard yang telah ditentukan. Sistem CORBA terdiri dari objek-objek yang mengisolasi suatu client dari suatuserver dengan menggunakan interface enkapsulasi yang didefinisikan secara ketat. Objekobjek CORBA dapat berjalan di atas berbagai platform, dapat terletak dimana saja dalamsuatu network, dan dapat dikodekan dengan bahasa pemrograman apapun asal memiliki IDL mapping.
Object Management Architecture (OMA) mendefinisikan berbagai fasilitas highlevel yang diperlukan untuk komputasi berorientasi objek. Bagian utama dari OMA adalah Object Request Broker (ORB). ORB merupakan suatu mekanime yang memberikan transparansi lokasi, komunikasi, dan aktivasi. Suatu objek. ORB adalah semacam software bus untuk objek-objek dalam CORBA. Berdasarkan OMA, spesifikasi CORBA harus dipatuhi oleh ORB.

CORBA disusun oleh komponen-komponen utama :
a.    ORB (Object Request Broker)
b.    IDL (Interface Definition Language)
c.    DII (Dynamic Invocation Interface)
d.   IR (Interface Repositories)
e.    OA (Object Adapter)
4.        Kelebihan Pemakaian Corba
a.    Programmer dapat dengan mudah menulis aplikasi yang mampu bekerja secara independent antar platform dan jaringan.
b.    Memberikan kemampuan untuk mengintegrasi software aplikasi yang berbeda, tanpa harus tergantung pada fasilitas komunikasi tingkat bawah.Bekerja secara baik dengan beberapa middleware-middleware yang ada, termasuk Microsoft distributed system (DCOM).
c.    Memberikan extensi opsional untuk area yang tidak bisa dijamah oleh core aplikasi.
d.   Support penggunaan secara statis maupun dinamis.
e.    Punya protocol yang menjadi kesepakatan – IIOP, yang memfasilitasi komunikasi antar ORB
  • INSTALASI CORBA


Tools
-       Eclipse
Langkah Kerja
-       Buka eclipse

-       Klik help > install new software

-       Klik add > ketikkan nama dan location seperti dibawah ini > ok



-       Centang semua opsi yang ada > klik next

-       Tunggu sampai selesai > klik Finish
-       Kemudian cek hasil instalasi dengan klik > file > new > other, jika berhasil akan terdapat corba.

*PROGRAM KONVERSI BILANGAN

Source Program
1.        Buat java project, file > new > java project

2.        Kemudian klik kanan pada project yang baru terbentuk > klik new > other > pilih corba > idl file > next > ketikkan “Konversi.idl” > klik finish

3.        Source code Konversi.idl
module Konversi {
      interface konversi{          
            void biner(in long decimal);
            void hexa(in long decimal);
            void oktal(in long decimal);
           
            void hasil(in long decimal);
      };
};

4.        Klik kanan pada Konversi.idl > Corba > CompileStubs > Ok

5.        Akan terdapat package baru dengan class seperti berikut





6.        Klik Kanan pada package Konversi > new > Class dengan class induk konversiPOA > Finish

Source Code
package Konversi;
public class konversiImpl extends konversiPOA {
      @Override
      public void biner(int decimal) {
            if (decimal > 1){
                  biner(decimal/2);
            }
            System.out.print(decimal % 2);
      }
      @Override
      public void hexa(int decimal) {
            char[] hexadecimal = {'0', '1',     '2', '3', '4', '5''6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E'};  
            int sisaBagi = decimal % 16;
            if(decimal > 0){
                  hexa((decimal-sisaBagi) / 16);
                  System.out.print(hexadecimal[decimal % 16]);
            }
      }
      @Override
      public void oktal(int decimal) {
            int sisaBagi = decimal % 8;
            if(decimal>0){
                  oktal((decimal - sisaBagi)/8);
                  System.out.print(decimal % 8);
            }    
      }
      @Override
      public void hasil(int decimal) {
            System.out.println("-------------------------------");
            System.out.println("-----**Konversi Bilangan**-----");
            System.out.println("-------------------------------\n");
           
            System.out.println("Decimal         : " + decimal);
           
            System.out.print("Hasil Biner : ");
            biner(decimal);
            System.out.println();
           
            System.out.print("Hasil Hexa  : ");
            hexa(decimal);
            System.out.println();
           
            System.out.print("Hasil Oktal : ");
            oktal(decimal);
            System.out.println();
           
            System.out.println("\n-------------------------------");
            System.out.println("------------**End**------------");
            System.out.println("-------------------------------");
      }
}

7.        Buat main class konversiServer pada package Konversi

Source Code
package Konversi;

import java.io.PrintWriter;
import org.omg.CORBA.ORB;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
public class konversiServer {
      /**
       * @param args
       */
      public static void main(String[] args) throws Exception {
            ORB orb = ORB.init(args, null);
            POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
            konversiImpl impl = new konversiImpl();
            byte[] id = rootPOA.activate_object(impl);
            org.omg.CORBA.Object ref = rootPOA.id_to_reference(id);
            String ior = orb.object_to_string(ref);         System.out.println("===============================");
            System.out.println("------**Server Strating**------");      System.out.println("===============================\n");
            PrintWriter file = new PrintWriter("c:\\ior.txt");
            file.println(ior);
            file.close();
            rootPOA.the_POAManager().activate();
            orb.run();
      }
}

8.        Buat main class konversiClient pada package Konversi

Source Code
package Konversi;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;
import org.omg.CORBA.ORB;
public class konversiClient {

      /**
       * @param args
       */
      public static void main(String[] args) throws Exception{
            ORB orb = ORB.init(args, null);
            BufferedReader br = new BufferedReader(new FileReader("c:\\ior.txt"));
            String ior = br.readLine();
            br.close();
            org.omg.CORBA.Object o = orb.string_to_object(ior);
            konversi k = konversiHelper.narrow(o);
            int desimal;
            Scanner in = new Scanner(System.in);      System.out.println("***********************************");
            System.out.println("* Program Akan Melakukan Konversi *");
            System.out.println("** Dari Desimal Ke Biner, Hexa,  **");
            System.out.println("************ dan Oktal ************");      System.out.println("***********************************\n\n");
            System.out.print("Masukan Bilangan Desimal : ");desimal = in.nextInt();
            k.hasil(desimal);
      }
}
9.        Jalankan konversiServer

10.    Jalankan konversiClient

11.    Hasil running konversiServer setelah konversiClient dijalankan

Catatan : Eclipse yang digunakan adalah eclipse juno dengan jdk dibawah 1.6
Deskripsi File
1.        konversi.idl, merupakan file dasar CORBA yang akan dicompile ke dalam bahasa java.
2.      _konversiStub.java, merupakan kelas yang merepresentasikan stub pada sisi klien yang menyediakan fungsi CORBA untuk client yang diimplementasikan oleh antarmuka Hello.java
3.      konversiHelper.java, merupakan kelas final yang menyediakan fungsi pembantu, seperti method narrow() yang dibutuhkan untuk melakukan casting pada referensi objek CORBA menjadi tipe yang dibutuhkan.
4.  konversi.java, antarmuka ini berisi versi Java dari Idl. Hello.java merupakan turunan dari org.omg.CORBA.Object yang menyediakan fungsi objek standart CORBA
5.    konversiHolder.java, kelas final yang menangani anggota instans public dari tipe Hello. Kelas ini menyediakan operasi keluar masuknya argumen yang diijinkan CORBA tapi tidak mudah dipetakan pada Java.
6.   konversiOperations.java, kelas antarmuka ini berisi method dari interface. IDL-to-Java memetakan semua operasi yang didefinisikan pada antarmuka IDL ke file ini dimana dapat diakses oleh server maupun klient.
7.        konversiPOA.java, merupakan kelas abstrak yang menyediakan fungsi dasar server CORBA.
8.        konversiImpl.java, kelas yang berisi method yang akan dijalankan pada client
9.        HelloServer.java
-       Server pada CORBA sama dengan server pada aplikasi Java pada umumnya dimana diperlukan mengimpor pustaka, mendeklarasikan kelas server, metode main(), dan penanganan eksepsi. Server CORBA membutuhkan objek ORB lokal. Setiap server menginisialisasi sebuah ORB dan meregister objek servant sehingga ORB dapat mendeteksi server saat sebuah invokasi sampai pada server.
-       Deklarasi dan inisialisasi ORB dilakukan di dalam blok try-catch dengan kode sebagai berikut:
ORB orb = ORB.init(args, null);
-       Server harus mengambil nilai dari root POA (Portable Object Adapter) dan mengaktifkan POAManager. POA adalah sebuah mekanisme yang menghubungkan sebuah request menggunakan objek yang diacu dengan kode yang sesuai untuk memenuhi  request itu.
-       Sebuah server merupakan sebuah proses yang menginstansiasi (menggunakan) satu atau lebih objek servant. Servant mengimplementasikan antarmuka yang digenerasi oleh idlj dan mengerjakan operasi yang ada pada antarmuka itu. Pada praktikum ini sebuah HelloServer membutuhkan sebuah servant.
-       HelloServer bekerja dengan naming service yang membuat operasi objek servant dapat diakses oleh klien. Server membutuhkan sebuah referensi objek ke name service sehingga dapat meregister dirinya sendiri dan memastikan invokasi ke antarmuka Hello diteruskan ke objek servant-nya.
-            Servant diinstansiasi dalam blok try-catch dengan kode:
orb.resolve_initial_references()
untuk mendapatkan sebuah referensi objek ke nama server
-            Pada kode:
org.omg.CORBA.Object ref =
orb.resolve_initial_references("NameService");
String “NameService” didefinisikan untuk semua ORB CORBA sehingga ORB dapat mengembalikan objek naming context yang merupakan objek referensi untuk name service.
-       Kode-kode sebelumnya merupakan kode-kode untuk menyiapkan server, setelahnya server tinggal menunggu invokasi dari klien ke ORB dengan kode
Orb.run();
10.    HelloClient.java
-       Klien CORBA membutuhkan ORB lokal untuk proses marshaling dan kerja IIOP. Setiap klien menginstansiasi sebuah dan org.omg.CORBA.ORB menginisialisasi ORB. ORB dideklarasikan dan diinisialisasi di dalam blok try-catch.
ORB orb = ORB.init(args, null);
-       Dipanggil orb.resolve_initial_references() untuk mendapatkan naming context, ditulis dalam blok try-catch dengan kode:
org.omg.CORBA.Object objRef =
orb.resolve_initial_references("NameService");
String “NameService” didefinisikan untuk semua ORB CORBA. Ketika string tersebut dilewatkan  maka ORB akan mengembalikan initial naming context yang merupakan referensi objek ke name service
-       Klien memanggil metode pada sisi server dan mencetaknya ke layar dengan kode
permisi gan, saya ada sedikit tulisan mengenai protokol websocket yang fungsinya hampir sama dengan corba, saya menggunakan bahasa java berikut gan: http://datacomlink.blogspot.co.id/2015/11/script-java-websocket-rfc-6455-server.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..