ナビゲーション・リンクをスキップ
Java(tm) Platform
Standard Edition 8

パッケージ 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(tm) Platform
    Standard Edition 8

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