7.17.8. Rehearsal

The notable features of CORBA whose purpose and design you should understand include:

References. 

  1. DOC Group: TAO Implementation Repository. http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/docs/implrepo/paper.html

Questions. 

  1. The CORBA middleware relies on a specialized interface definition language to describe interfaces of remotely accessible objects. Explain why this choice was made rather than relying on the interface definitions in an implementation language.

  2. Even though CORBA IDL interfaces are mapped into classes both in C++ and in Java, the CORBA IDL interface attributes are not mapped into class attributes in C++ nor in Java. Explain why and outline how the attributes are mapped.

  3. When mapping the CORBA IDL integer types into C++, the C++ integer types cannot be used directly because C++ does not define the precision of the integer types in as much detail as CORBA IDL. Explain how this problem is solved.

  4. When mapping the CORBA IDL integer types into Java, not all the integer types can be mapped directly because Java does not provide all the precisions of the integer types available in CORBA IDL. Explain how this problem is solved.

  5. The CORBA IDL sequence type, which describes a variable length vector, has no direct counterpart in the basic C++ types. Explain how and why the type is mapped into C++.

  6. The CORBA IDL union type, which describes a container that can hold any single item of a choice of items and preserves information on which item is held at a given time, has no direct counterpart in the basic C++ nor Java types. Choose either C++ or Java and explain how and why CORBA IDL union is mapped into that language.

  7. Nakreslete strukturu CORBA aplikace. Vyznačte, kde jsou umístěné nebo se používají IIOP, POA, proxy, servant, skeleton a stub a vysvětlete funkci těchto prvků.

  8. Při podpoře paralelního zpracování více požadavků na serveru se může použít model thread pool, ve kterém má server množinu vláken připravených k obsluze požadavků. Vysvětlete přednosti tohoto modelu a doplňte zde uvedený popis modelu o podrobnosti, o které se tyto přednosti opírají.

  9. Portable Object Adapter ve standardu CORBA dovoluje definovat default servant, kterému jsou doručeny všechny požadavky, pro které nebyl nalezen jiný servant. Vysvětlete, v jakých situacích je vhodné default servant použít.

  10. Portable Object Adapter ve standardu CORBA dovoluje definovat servant activator, který je požádán o vytvoření servantu v situaci, kdy pro příchozí požadavek nebyl žádný servant nalezen. Vysvětlete, v jakých situacích je vhodné servant activator použít.

  11. Portable Object Adapter ve standardu CORBA dovoluje nastavit pomocí servant retention policy zda se mají v tabulce active object map evidovat všechny aktivní servanty. Vysvětlete, v jakých situacích je vhodné upustit od evidence aktivních servantů v active object map.

  12. Protokol GIOP ve standardu CORBA umožňuje pomocí zprávy LOCATION FORWARD informovat klienta o tom, že server se nachází jinde než se klient domníval. Vysvětlete, jak je tento mechanismus možné použít k implementaci persistentních objektů, jejichž reference zůstávají v platnosti i při ukončení serveru.

  13. Standard CORBA definuje službu Naming sloužící k registraci a vyhledávání serverů. Základní operace této služby jsou bind a resolve:

    void bind (in Name n, in Object obj) raises (AlreadyBound ...);
    Object resolve (in Name n) raises (NotFound ...);
    

    Popište sémantiku těchto operací.

  14. Standard CORBA definuje službu Trading sloužící k registraci a vyhledávání serverů. Základní operace této služby jsou export a query:

    OfferId export (
      in Object reference,
      in ServiceTypeName type,
      in PropertySeq properties);
    void query (
      in ServiceTypeName type,
      in Constraint constr,
      in Preference pref,
      ...
      out OfferSeq offers,
      out OfferIterator offer_itr,
      ...);
    

    Popište sémantiku těchto operací.

  15. Standard CORBA nabízí možnost neblokujícího volání pomocí callbacku. Následující fragment CORBA IDL uvádí příklad blokující operace a k ní vygenerované rozhraní pro neblokující volání pomocí callbacku:

    // Příklad blokující operace
    void example_operation (in string anInArgument, out double anOutArgument);
    
    // Rozhraní pro neblokující volání
    void sendc_example_operation (
      in AMI_ExampleHandler ami_handler,
      in string anInArgument);
    
    interface AMI_ExampleHandler
    {
      void example_operation (in double anOutArgument);
    }
    

    Vysvětlete na tomto příkladu fungování neblokujícího volání pomocí callbacku.

  16. Standard CORBA nabízí možnost neblokujícího volání pomocí pollingu. Následující fragment CORBA IDL uvádí příklad blokující operace a k ní vygenerované rozhraní pro neblokující volání pomocí pollingu:

    // Příklad blokující operace
    void example_operation (in string anInArgument, out double anOutArgument);
    
    // Rozhraní pro neblokující volání
    AMI_ExamplePoller sendp_example_operation (in string anInArgument);
    
    valuetype AMI_StockManagerPoller
    {
      void example_operation (in unsigned long timeout, out double anOutArgument);
    }
    

    Vysvětlete na tomto příkladu fungování neblokujícího volání pomocí pollingu.