Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет org.omg. PortableServer

Обеспечивает классы и интерфейсы для того, чтобы сделать серверную сторону Ваших приложений переносимой через ШАРЫ разных производителей.

См.: Описание

Пакет org.omg. Описание PortableServer

Обеспечивает классы и интерфейсы для того, чтобы сделать серверную сторону Ваших приложений переносимой через ШАРЫ разных производителей.

В Java Переносимый Объектный Адаптер (POA) на основе Динамический Скелетный Интерфейс (DSI) слуги наследовались от стандартного класса DynamicImplementation, который наследовался от класса Servant. Собственный тип Servant определяется модулем PortableServer для POA. В Java тип Servant отображается на Java класс org.omg.PortableServer.Servant. Это служит базовым классом для всех реализаций слуги POA и обеспечивает много методов, которые могут быть вызваны прикладным программистом, так же как методами, которые вызываются POA непосредственно и могут быть переопределены пользователем, чтобы управлять аспектами поведения слуги.

Спецификация пакета

Для точного списка поддерживаемых разделов официальных спецификаций OMG, которым Java [ТМ] подчиняется Платформа, Standard Edition 6, см. Официальные Спецификации для поддержки CORBA в Java [ТМ] SE 6.

POA-связанные Интерфейсы

Модуль PortableServer определяет следующие POA-связанные интерфейсы:

Кроме того, POA определяет Servant собственный тип.

Классы операций

У каждого из упомянутых выше интерфейсов есть связанное Operations интерфейс. Operations интерфейс сгенерирован idlj компилятор и содержит сигнатуры методов для методов, определенных в его связанном интерфейсе. Operations к интерфейсу можно получить доступ и клиентом и сервером, в то время как его связанный интерфейс может только вызвать клиент.

Классы значения

Классы, заканчивающиеся в суффиксе PolicyValue обеспечьте значения, используемые для create_POA вызовите, который устанавливает политику для POA. См. пример кода ниже для демонстрации. PolicyValue файлы включают следующее:

Классы помощника

Классы помощника, которые сгенерированы для всех определяемых пользователем типов в интерфейсе IDL OMG, статические методы предоставления, должны были управлять теми типами. Есть только один метод в классе помощника, который использует прикладной программист: narrow метод. Только у интерфейсов Java, отображенных от интерфейсов IDL, будет класс помощника, который включает a narrow метод, таким образом, в PortableServer пакет, только у следующих классов есть a narrow метод:

Классы POA

Классы POA используются, чтобы реализовать ServantActivator или ServantLocator.

Исключения

ForwardRequest исключение указывает к ШАРУ, что это ответственно за поставку текущего запроса и последующий ForwardRequest запросы к объекту, обозначенному в forward_reference элемент исключения.

Интерфейсы, Реализованные Прикладным программистом

Большинство какой PortableServer делает прозрачно пользователю. Результат состоит в том, что программисты будут использовать только несколько из упомянутых выше интерфейсов. Остающиеся интерфейсы будут обеспечены реализацией ШАРА. Интерфейсы интереса для прикладных программистов являются следующим:

Пакет org.omg.PortableServer.ServantLocatorPackage

Этот пакет предоставляет класс CookieHolder для того, чтобы передать тип Cookie как out параметр. CookieHolder класс следует точно за тем же самым образцом как другие классы держателя для основных типов.

Связанная Документация

Для краткого обзора IDL Java, пожалуйста, см.:

  • Домашняя страница IDL Java.

    Пример кода

    Серверный код в качестве примера

    import javax.naming.InitialContext;
    import javax.naming.Context;
    import javax.rmi.PortableRemoteObject ;
    import com.sun.corba.se.impl.poa.POAORB;
    import org.omg.PortableServer.*;
    import java.util.*;
    import org.omg.CORBA.*;
    import javax.rmi.CORBA.Stub;
    import javax.rmi.CORBA.Util;
    
    
    
    public class HelloServer {
        public HelloServer(String[] args) {
            try {
                Properties p = System.getProperties();
             //   p.put("org.omg.CORBA.ORBClass", "com.sun.corba.ee.internal.POA.POAORB");
                ORB orb = ORB.init( args, p );
    
                POA rootPOA = (POA)orb.resolve_initial_references("RootPOA");
    
                Policy[] tpolicy = new Policy[3];
                tpolicy[0] = rootPOA.create_lifespan_policy(
                    LifespanPolicyValue.TRANSIENT );
                tpolicy[1] = rootPOA.create_request_processing_policy(
                    RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY );
                tpolicy[2] = rootPOA.create_servant_retention_policy(
                    ServantRetentionPolicyValue.RETAIN);
                POA tpoa = rootPOA.create_POA("MyTransientPOA", null, tpolicy);
    
    
                String  ObjectId = "MyObjectId";
                byte[] oid = ObjectId.getBytes();
    
                org.omg.CORBA.Object obj = tpoa.create_reference_with_id(oid,
                    new _HelloImpl_Tie()._all_interfaces(tpoa, oid)[0]);
                HelloInterface helloRef = (HelloInterface)PortableRemoteObject.narrow(
                    obj, HelloInterface.class );
    
                Context initialNamingContext = new InitialContext();
                initialNamingContext.rebind("HelloService", helloRef);
                System.out.println("Hello Server: Ready...");
                orb.run();
             } catch (Exception e) {
                System.out.println("Trouble: " + e);
                e.printStackTrace();
             } 
         }
    
    
         public static void main(String args[]) {
             new HelloServer( args );
         }
    }
    
    
    

  • С тех пор:
    1.4
     Платформа Java™
    Стандарт Эд. 7

    Представьте ошибку или функцию
    Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
    Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.