1.1.12. fejezet, Java és CORBA

A Java alkalmas a CORBA alapú kommunikációra. Ehhez készítettem egy tanulmány programot. A JDK 1.6-ot használom a mintában, ám lehet komolyabb komponens készletet is alkalmazni, mint például a JacORB, amiben használható SSL is a kommunikáció titkosításához.

A JDK-ban mellékelt ORB szerver indítása (nyitott TCP portok: 1050,1049):

orbd -ORBInitialPort 1050 -ORBInitialHost localhost

CORBA szerver indítása:

java -jar server.jar -ORBInitialPort 1050 -ORBInitialHost localhost 

CORBA kliens indítása:

java -jar client.jar -ORBInitialPort 1050 -ORBInitialHost localhost

A CORBA platform független leíró nyelvben, az IDL-ben írja le az interfészeket. Ezt a JDK-ban mellékelt idlj parancsal konvertálhatjuk Java kóddá. Két minta IDL:

module Timer_Corba_client
{
  interface ITimerClient
  {
   boolean OnNewMessage(in string pMessage);
   boolean OnTimer(in long ThreadPID);
   boolean OnServerDown();
  };
};
#include <TimerClient.idl>
 
module Timer_Corba_server
{
  interface TimerServer
  {
   boolean LogIn(in string userName, in string passwd, in Timer_Corba_client::ITimerClient EventObj);
   boolean LogOut();
   boolean SendMessage(in string message,in string targetUserName);
   long RegisterEvent(in any data);
   boolean DeleteEvent(in long eventId);
   boolean Shutdown();
  };
};

POA (Portable Object Adapter) és segéd osztályok, interfészek létrehozása:

idlj - -fall TimerClient.idl TimerServer.idl

A generált kódok az Timer_Corba_client könyvtárban a következők:

  • ITimerClient.java : Az IDL interfész mint Java interfész
  • ITimerClientHelper.java : Tipus operációk implementálása az interfész számára
  • ITimerClientHolder.java : Kimenő és ki-be menő paraméterekhez használt segédosztály
  • _ITimerClientStub.java : Helyi objektum implementációja a távoli CORBA objektumnak, ami továbbítja az összes kérést a távoli objektumnak. A kliens nem használja ezt az osztályt közvetlenül.
  • ITimerClientOperations.java : Az ITimerClient interfész kiegészítő interfésze, ami leírja a kliens műveleteit.
  • ITimerClientPOA.java : Ezt az osztályt kell kiterjesztenünk az implementációs osztályban.

Típus konverziók:

IDL Típus Java Típus
boolean boolean
char / wchar char
octet byte
short / unsigned short short
long / unsigned long int
long long / unsigned long long long
float float
double double
string / wstring String

Kulcsszó konverziók:

IDL Java
module package
interface interface
operation metódus
attribute metódus pár
exception exception