Wednesday, February 01, 2006

JCA (J2EE Connector Architecture)

JCA (J2EE Connector Architecture)

JCA merupakan solusi untuk EAI (enterprise application integration).
JCA adalah standar/spesifikasi untuk koneksi antara aplikasi J2EE dengan enterprise information systems (EIS).
EIS dapat berupa mainframe transaction processing (TP), database systems, dan legacy applications (misalnya ERP, CMS) yang dibuat mungkin-tidak menggunakan Java.

Versi JCA:
  • Versi awal adalah versi 1, memiliki kelemahan:
    • Tidak support komunikasi asinkron (asynchronous)
    • Tidak support (built-in) pertukaran data XML
    Tidak suport komunikasi dari EIS ke aplikasi (inbound)
  • Versi 1.5

Komponen dari JCA:

* Resource adapter (disingkat disini sebagai RA)
  • Resource adapter ini mirip dengan JDBC, spesifik untuk suatu EIS (misalnya SAP atau PeopleSoft).
  • Berupa sebuah file disebut Resource Adapter Archive (RAR) file yeng berisi file-file jar dan native library yang diperlukan oleh J2EE container.
  • File resource adapter dengan ekstensi .rar memiliki deployment descriptor bernama ra.xml. File rar ini kemudian di-deploy ke sebuah application server sehingga bisa digunakan oleh aplikasi Web, EJB atau aplikasi lain yang terkoneksi ke application server
  • RA adapter biasanya bisa kita dapatkan dari vendor pembuat EIS.
  • RA dapat memiliki beberapa macam cara komunikasi antar EIS dan aplikasi:
    1. Outbound communication: Hanya support koneksi dari aplikasi ke EIS dan mengkeskusi pekerjaan EIS.
    2. Inbound communication: Hanya support koneksi dari EIS ke aplikasi dan mengkeskusi pekerjaan di aplikasi.
    3. Bi-directional communication: SUpport kedua jenis koneksi diatas.
* Kontrak (contracts)
  • Adalah pendefinisian cara suatu J2EE server dengan JCA adapter untuk saling berinteraksi/berkolaborasi.
  • Ada 7 macam (hanya 3 macam pada JCA versi 1) system contrancts yaitu:
    1. Manajemen koneksi (Connection management), memberikan kemampuan AS untuk mem-pool koneksi ke EIS
    2. Manajemen transaksi (Transaction management), memberikan kemampuan akses transaksional ke EIS
    3. Keamanan (Security), memberikan kemampuan akses yang aman ke EIS
    4. Manajemen siklus hidup (LIfecycle management), memberikan kemampuan AS untuk memajemen siklus hidup suatu RA
    5. Manajemen kerja (Work Management), EIS dapat mengirimkan suatu pekerjaan (Work) yang dieksekusi AS
    6. Inflow transaction (Transaction Inflow), RA dapat mengirimkan transaksi dari EIS ke AS
    7. Inflow pesan (Message Inflow), kolaborasi pengiriman pesan asinkron

* Common Client Interface (CCI)
  • Standar API yang "common" untuk mengakses EIS oleh aplikasi klien.
  • Package javax.resource.cci / javax.resource.spi
  • API (connector-api.jar) dapat di download di http://java.sun.com/j2ee/connector/download.html

  • Bagian dari CCI API yaitu:
    • Yang berhubungan dengan koneksi ke EIS (Connection Interfaces)
    • Eksekusi perintah pada EIS (Interaction Interfaces)
    • Enkapsulasi hasil query dari EIS (Record/ResultSet Interfaces)
    • Metadata pada EIS yang dapat di-query (Metadata Interfaces)
    • Service Endpoint Message Listener Interface
    • Exception Interface
Contoh kode penggunaan CCI (kode ini mirip query ke database menggunakan JDBC):
       int count;
try {
// Buat koneksi
ConnectionSpec spec = new CciConnectionSpec(user, password);
Connection con = cf.getConnection(spec);

// Buat interaksi, seperti membuat statement pada JDBC
Interaction ix = con.createInteraction();
CciInteractionSpec iSpec = new CciInteractionSpec();
iSpec.setSchema(user);
iSpec.setFunctionName("EMPLOYEECOUNT");
RecordFactory rf = cf.getRecordFactory();
IndexedRecord iRec = rf.createIndexedRecord("InputRecord");

// Eksekusi
Record rec = ix.execute(iSpec, iRec);

// Proses hasil eksekusi
Iterator iter = ((IndexedRecord)rec).iterator();
while(iter.hasNext()) {
Object obj = iter.next();
if(obj instanceof Integer) {
count = ((Integer)obj).intValue();
}
}

// Tutup koneksi
con.close();
}
catch(Exception e) {
e.printStackTrace();
}
System.out.println("Employee count is: " + count);

Referensi:
- J2EE Connector Architecture Overview
- J2EE Connector Architecture Specification
- Introduction to the J2EE Connector Architecture

Followers