Sieciowa komunikacja procesów - CORBA

// definicja interfejsu

CORBA1_Interfejs.IDL

module CORBA1_laczniki {

interface CORBA1_Interfejs {

attribute long suma;

long zwiekszaj( );

string podajDate( );

};

};

// CORBA1_Serwer.java

//

import java.util.*;

import CORBA1_laczniki.*;

// wlasne namiastki

import org.omg.CosNaming.*;

//usluga nazewnicza

import org.omg.CosNaming.NamingContextPackage.*;

//wyjatki uslugi nazewniczej

import org.omg.CORBA.*;

//niezbedne we wszystkich aplikacjach CORBA import org.omg.PortableServer.*;

// klasy dla modelu serwera przenosnego

import org.omg.PortableServer.POA;

// klasy dla modelu serwera przenosnego

import java.util.Properties;

// inicjowanie ORB

class CORBA1_Impl extends CORBA1_InterfejsPOA {

private ORB orb;

private int suma;

public void setORB(ORB orb_val) {

orb = orb_val;

}

-----------------------------------------------------------

public String podajDate( ) {

// pobranie daty

String data = new Date().toString();

System.out.println("SERWER: Wyslalem informacje o czasie: " + data); return data;

}

-----------------------------------------------------------

CORBA1_Impl()

{

// Konstruktor

System.out.println("Obiekt CORBA1 stworzony"); suma = 0;

}

-----------------------------------------------------------

public

int suma() {

// pobranie wartości atrybutu suma

return suma;

}

-----------------------------------------------------------

public

void suma(int war) {

// ustawienie wartości atrubutu suma

suma = war;

}

-----------------------------------------------------------

public int zwiekszaj() {

// inkrementacja atrybutu suma

suma++;

return suma;

}

}

Opracował: Zbigniew Suski

1

Sieciowa komunikacja procesów - CORBA public class CORBA1_Serwer {

public static void main(String args[]) {

try {

//

tworzenie i inicjowanie instancji ORB

ORB orb = ORB.init(args,null);

//

pobieranie referencji do glownego POA i aktywowanie zarządcy POA POA poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); poa.the_POAManager().activate();

//

utworzenie i zarejestrowanie pomocnika (servant) CORBA1_Impl pomocnik = new CORBA1_Impl();

pomocnik.setORB(orb);

//

utworzenie referencji do obiektu serwera)

org.omg.CORBA.Object ref = poa.servant_to_reference(pomocnik); CORBA1_Interfejs pref = CORBA1_InterfejsHelper.narrow(ref);

//pobranie referencji do uslugi nazewniczej org.omg.CORBA.Object objRef =

orb.resolve_initial_references("NameService"); NamingContextExt nazwaRef = NamingContextExtHelper.narrow(objRef);

//powiazanie nazwy z referencja do obiektu String nazwa = "CORBA1";

NameComponent path[] = nazwaRef.to_name(nazwa); nazwaRef.rebind(path,pref);

System.out.println("CORBA1_Serwer gotowy - oczekuje na zgloszenia \n"); orb.run();

}

catch (Exception e) {

System.err.println("BLAD: " + e); e.printStackTrace(System.out);

}

System.out.println("CORBA1_Serwer konczy dzialanie \n");

}

}

Opracował: Zbigniew Suski

2

Sieciowa komunikacja procesów - CORBA

// CORBA1_Klient.java

//

import java.io.*;

import java.util.*;

import org.omg.CORBA.*;

//niezbedne we wszystkich aplikacjach CORBA import org.omg.CosNaming.*;

//usluga nazewnicza

import org.omg.CosNaming.NamingContextPackage.*;

//wyjatki uslugi nazewniczej

import CORBA1_laczniki.*;

// wlasne namiastki

public class CORBA1_Klient {

static CORBA1_Interfejs interfejs;

public static void main(String args[]) {

try {

//

tworzenie i inicjowanie ORB

ORB orb = ORB.init(args,null);

//pobranie referencji do uslugi nazewniczej (root naming context) org.omg.CORBA.Object objRef =

orb.resolve_initial_references("NameService"); NamingContextExt nazwaRef = NamingContextExtHelper.narrow(objRef);

//pobranie referencji obiektu obslugujacego String nazwa = "CORBA1";

interfejs = CORBA1_InterfejsHelper.narrow(nazwaRef.resolve_str(nazwa)); System.out.println("Uzyskano uchwyt do serwera: "); System.out.println("\nPoczatkowa wartosc atrybutu suma = 0"); interfejs.suma((int)0);

System.out.println("\nCzas poczatkowy: " + interfejs.podajDate()); for (int i = 0 ; i < 300 ; i++ ) {

interfejs.zwiekszaj();

System.out.print('.');

}

System.out.println("\nSuma koncowa= " + interfejs.suma()); System.out.println("\nCzas koncowy: " + interfejs.podajDate());

}

catch (Exception e) {

System.err.println("BLAD: " + e); e.printStackTrace(System.out);

}

}

}

Opracował: Zbigniew Suski

3

Sieciowa komunikacja procesów - CORBA

// CORBA1_KlientDII.java

//

import CORBA1_laczniki.*;

// wlasne namiastki

import org.omg.CosNaming.*;

//usluga nazewnicza

import org.omg.CosNaming.NamingContextPackage.*;

//wyjatki uslugi nazewniczej

import org.omg.CORBA.*;

//niezbedne we wszystkich aplikacjach CORBA public class CORBA1_KlientDII {

static CORBA1_Interfejs interfejs;

public static void main(String args[]) {

org.omg.CORBA.Request request;

try {

//

tworzenie i inicjowanie ORB

ORB orb = ORB.init(args,null);

//pobranie kontekstu uslugi nazewniczej (root naming context) org.omg.CORBA.Object objRef =

orb.resolve_initial_references("NameService"); NamingContextExt nazwaRef = NamingContextExtHelper.narrow(objRef);

//pobranie referencji obiektu obslugujacego String nazwa = "CORBA1";

interfejs = CORBA1_InterfejsHelper.narrow(nazwaRef.resolve_str(nazwa)); System.out.println("Uzyskano uchwyt do serwera: ");

// pobranie referencji bez uzycia namiastki, dla metody zwiekszaj org.omg.CORBA.Object obj = nazwaRef.resolve_str(nazwa); System.out.println("\nPoczatkowa wartosc atrybutu suma = 0"); interfejs.suma((int)0);

System.out.println("\nCzas poczatkowy: " + interfejs.podajDate()); for (int i = 0 ; i < 300 ; i++ ) {

request = buildRequest(obj,orb);

request.invoke();

System.out.print('.');

}

System.out.println("\nSuma koncowa= " + interfejs.suma()); System.out.println("\nCzas koncowy: " + interfejs.podajDate());

}

catch (Exception e) {

System.err.println("BLAD: " + e); e.printStackTrace(System.out);

}

}

public static org.omg.CORBA.Request buildRequest(org.omg.CORBA.Object obj, ORB orb)

{

org.omg.CORBA.Request r2 = obj._request("zwiekszaj"); r2.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_long)); return r2;

}

}

Opracował: Zbigniew Suski

4