NO_IMPLICIT_ACTIVATION (необхідно створювати CORBA-об'єкти явно). p align="justify"> Режим створення та управління сервантами (RequestProcessingPolicyValue). Тут потрібно дати більш докладні пояснення. p align="justify"> В принципі, можливі тільки два режими створення сервантів: серванти створюються в програмі або явно (як в раніше розглянутих прикладах), або в процесі надходження клієнтських запитів - можливо, навіть для обслуговування одного-єдиного запиту. POA забезпечує підтримку обох режимів. p align="justify"> По-перше, POA може містити так званий Active Object Map (AOM), тобто масив покажчиків на вже створені серванти. В«ІндексомВ» цього масиву є значення Object ID. У цей масив можуть потрапляти як серванти, створені явно програмістом, так і серванти, динамічно створені самим об'єктним адаптером. p align="justify"> У разі динамічного створення сервантів передбачено два окремих режими - Activation-режим і Location-режим. Назви їх, на мій погляд, обрані дуже дивним чином. Activation-режим полягає в тому, що під час вступу клієнтського запиту POA спочатку шукає підходящий сервант в AOM, і тільки якщо такої не знайдений, цей сервант динамічно створюється POA, а потім покажчик на нього поміщається в AOM. Location-режим не В«дивитьсяВ» в AOM - AOM взагалі не підтримується в цьому режимі - а створює сервант для обслуговування прийшов виклику, а потім знищує його. p align="justify"> Процес динамічного створення сервантів полягає в тому, що POA викликає деякі написані програмістом функції. Природно, такі функції необхідно зареєструвати в POA - для цього передбачені спеціальні команди. p align="justify"> Нарешті, передбачений якийсь допоміжний, але в деяких випадках дуже зручний режим - так званий В«сервант за замовчуваннямВ». Суть цього режиму полягає в тому, що програміст явно створює один-єдиний сервант і реєструє його як сервант, який є інкарнацією всіх CORBA-об'єктів. Ось приклад ситуації, коли такий підхід цілком виправданий: для взаємодії з базою даних ви створюєте сотні, тисячі чи мільйони CORBA-об'єктів - по одному на кожну запис, а потім створюєте один сервант, який не має свого стану, який обслуговує всі ці об'єкти. Стан кожного CORBA-об'єкта просто витягується з відповідного запису бази даних. p align="justify"> Отже, можливі значення опції RequestProcessingPolicyValue:
В§ USE_ACTIVATE_OBJECT_MAP_ONLY - дозволено тільки явне створення сервантів з приміщенням покажчиків на них у AOM;
В§ USE_DEFAULT_SERVANT - режим використання серванта за умовчанням;
В§ USE_SERVANT_MANAGER - використання або Activation-режиму (якщо опція ServantRetensionPolicyValue, див. нижче, має значення RETAIN), або Location-режиму (якщо ServantRetensionPolicyValue має значення NON_RETAIN).
В§ Режим забезпечення відпові...