Java™ Platform
Standard Edition 7

パッケージ org.omg.PortableServer

クラスとインタフェースを提供し、アプリケーションのサーバー側を複数ベンダー間 ORB で移植できるようにします。

参照: 説明

パッケージ org.omg.PortableServer の説明

クラスとインタフェースを提供し、アプリケーションのサーバー側を複数ベンダー間 ORB で移植できるようにします。

Java では、POA (Portable Object Adaptor) ベースの DSI (Dynamic Skeleton Interface) サーバントは、標準の DynamicImplementation クラスから継承します。これは、Servant クラスから継承しています。ネイティブな Servant 型は、POA の PortableServer モジュールによって定義されます。Java では、Servant 型は Java の org.omg.PortableServer.Servant クラスにマップされます。このクラスは、すべての POA サーバント実装の基底クラスとして機能し、アプリケーションプログラマが呼び出すことのできるいくつかのメソッドのほかに、POA そのものによって呼び出され、サーバントの動作を制御するためにユーザーがオーバーライドできるメソッドも提供します。

パッケージの仕様

Java(TM) Platform, Standard Edition 6 が準拠する公式の OMG 仕様のサポートセクションの正確なリストは、「Java(TM) SE 6 での正式な CORBA サポート仕様」を参照してください。

POA 関連のインタフェース

PortableServer モジュールは、次の POA 関連のインタフェースを定義します。

また、POA は Servant ネイティブ型も定義します。

オペレーションクラス

上記の各インタフェースには、Operations インタフェースが関連付けられています。Operations インタフェースは、idlj コンパイラによって生成され、それに関連付けられたインタフェースに定義されているメソッドのメソッドシグニチャーを格納します。Operations インタフェースはクライアントとサーバーの両方からアクセスできますが、それに関連付けられたインタフェースはクライアントからしか呼び出せません。

値クラス

接尾辞 PolicyValue で終わるクラスは、POA のポリシーを設定する create_POA 呼び出しに使用される値を提供します。デモンストレーションについては、次のコード例を参照してください。 PolicyValue ファイルには、次のものがあります。

ヘルパークラス

OMG IDL インタフェースのすべてのユーザー定義型で生成されるヘルパークラスは、ユーザー定義型の操作に必要な static メソッドを提供します。ヘルパークラスには、アプリケーションプログラマが使用するメソッドが 1 つだけあります。narrow メソッドです。IDL インタフェースからマップされる Java インタフェースだけが、narrow メソッドを含むヘルパークラスを備えています。したがって、PortableServer パッケージでは、次のクラスにだけ narrow メソッドがあります。

POA クラス

POA クラスは、ServantActivator または ServantLocator の実装に使用します。

例外

ForwardRequest 例外は、現在のリクエストと後続の ForwardRequest リクエストをその例外の forward_reference メンバーに示されたオブジェクトに配信する責任があることを ORB に通知します。

アプリケーションプログラマによって実装されるインタフェース

PortableServer によって行われる処理のほとんどは、ユーザーには見えません。このため、上記のインタフェースのうちでプログラマが使用するものはほんのわずかです。残りのインタフェースは、ORB 実装によって提供されます。アプリケーションプログラマが使用するインタフェースは、次のとおりです。

パッケージ org.omg.PortableServer.ServantLocatorPackage

このパッケージは、Cookie 型を out パラメータとして渡すための CookieHolder クラスを提供します。CookieHolder クラスは、基底型のほかのホルダークラスと同じパターンに従います。

関連項目

Java IDL の概要については、次を参照してください。

  • Java IDL のホームページ

    コード例

    サーバーコードの例

    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™ Platform
    Standard Edition 7

    バグまたは機能を送信
    詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
    Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.