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
Dawud Tan
11 Januari 2016 pukul 09.44