バージョン 6.3.3
 —  オペレーション  —

登録

クラスを DCOM クライアントからアクセスできるようにするには、クラスのいくつかの情報をシステムレジストリに追加する必要があります。 DCOM クライアントは、ほとんどの場合、次の例のようにプログラム識別子(ProgID)と呼ばれる意味のある名前でクラスをアドレスします。

CREATE OBJECT #O1 OF CLASS "Employee"

Natural クラスについては、DEFINE CLASS ステートメントに定義されたクラス名が、ProgID としてレジストリに書き込まれます。

システムレジストリエントリは、この ProgID をクラスのグローバルユニーク ID(GUID)にマップします。これにより、DCOM はクラスのすべての情報を一意に見つけることができます。 レジストリに保存されるその他の情報には、担当 DCOM サーバーのパスと名前、タイプライブラリのパスと名前、およびインターフェイス情報などがあります。

このドキュメントでは、次のトピックについて説明します。


Natural での登録

Natural クラスの登録(または登録解除)は、システムコマンド REGISTER(または UNREGISTER)を使用して手動で行うか、クラスが格納(または削除)された後に自動的に行うか、クラスが登録されるたびに生成される .reg ファイルを実行することによって行います。

クラスを登録するには、システムレジストリを修正できる権限が必要です。また、システム環境で COM を使用できる必要があります。

システムレジストリの Natural エントリをレジストリエディタで直接変更することは、レジストリエントリに矛盾が発生するおそれがあるため、通常はお勧めしません。

クラスは常に、Natural を起動したサーバー ID に登録されます。

Top of page

自動登録

プロファイルパラメータ AUTOREGISTER を "ON" に設定すると、Natural クラスは格納(カタログ)されるときに自動的に登録され、削除されるときに自動的に登録解除されます。 これにより、ユーザーはクラスを格納した後にそのクラスを直接テストできます。

自動登録では、クラスの DEFINE CLASS ステートメントの WITH ACTIVATION POLICY 節に定義されたアクティベーションポリシー設定が使用されます。 この節が指定されていない場合は、プロファイルパラメータ ACTPOLICY の設定が使用されます。

自動登録が設定されていて、クラスが格納(カタログ)される場合は、古いレジストリエントリがすべて削除されるように、クラスは格納前に登録解除され、格納後に登録されます。

Top of page

手動登録

以下では次のトピックについて説明します。

REGISTER コマンド

システムコマンド REGISTER を使用して、Natural クラスを登録します。 それらは、Natural を起動したサーバー ID に登録されます。

REGISTER

class-module-name

 

library-name

ES

IM
* * EM

class-module-name

適切な Natural オブジェクトモジュール名を指定することによって登録されるクラス(複数可)を定義します。

library-name

クラスの検索先ライブラリ(複数可)を定義します。

ES、IM、EM

クラスに登録されるアクティベーションポリシーを定義します。

以下のいずれかのパラメータを設定できます。

パラメータ 説明
ES アクティベーションポリシー "ExternalSingle" を設定します。
IM アクティベーションポリシー "InternalMultiple" を設定します。
EM アクティベーションポリシー "ExternalMultiple" を設定します。

以下の表に、クラスが登録されるすべての有効なクラス/ライブラリの組み合せを示します。

クラスモジュール名指定 ライブラリ名指定
library-name * -  
class-module-name ライブラリ library-name のクラスモジュール名 class-module-name のクラス 現在のステップライブラリにあるクラスモジュール名 class-module-name のすべてのクラス クラスモジュール名 class-module-name のクラス
* ライブラリ library-name にあるすべてのクラスを登録 現在のステップライブラリにあるすべてのクラスを登録 現在のログオンライブラリのすべてのクラスを登録

このパラメータが REGISTER コマンドまたは DEFINE CLASS ステートメントに指定されていない場合は、パラメータファイルに定義されているデフォルトのアクティベーションポリシーが使用されます。

UNREGISTER コマンド

システムコマンド UNREGISTER を使用して、Natural クラスの登録を解除します。

UNREGISTER

class-module-name

 

library-name

[server-id]

* *

class-module-name

適切な Natural オブジェクトモジュール名を指定することによって登録解除されるクラス(複数可)を定義します。

library-name

クラスの検索先ライブラリ(複数可)を定義します。

server-ID

クラスのサーバー ID を定義します。

以下の表に、クラスが登録解除されるすべての有効なクラス/ライブラリ/サーバー ID の組み合せを示します。

クラス名指定 ライブラリ名/サーバー ID の組み合せ
-- library-name - library-name server-ID * - *server-ID
class-module-name 現在のサーバー ID に登録されている、現在のログオンライブラリにある class-module-name のクラス 現在のサーバー ID に登録されている、ライブラリ library-name にある class-module-name のクラス サーバー server-ID に登録されている、ライブラリ library-name にある class-module-name のクラス 現在のサーバー ID に登録されている、現在のステップライブラリにある class-module-name のすべてのクラス サーバー server-ID に登録されている現在のステップライブラリにある class-module-name のすべてのクラス
* 現在のサーバー ID に登録されている、現在のログオンライブラリにあるすべてのクラス 現在のサーバー ID に登録されている、ライブラリ library-name にあるすべてのクラス サーバー server-ID に登録されている、ライブラリ library-name にあるすべてのクラス 現在のサーバー ID に登録されている、現在のステップライブラリにあるすべてのクラス サーバー server-ID に登録されている、現在のステップライブラリにあるすべてのクラス

class-module-name または class-module-name および library-name を指定した場合は、クラスまたはライブラリが見つからないと、REGISTER または UNREGISTER システムコマンドはエラーメッセージを返します。 REGISTER または UNREGISTER システムコマンドにアスタリスク(*)のみを指定した場合は、登録または登録解除されるクラスがなくてもエラーメッセージは返されません。

クラス GUID またはインターフェイス GUID のないクラスを REGISTER システムコマンドに指定した場合は、エラーメッセージが返されます。 このようなクラスはローカル Natural セッションでのみ使用できます。

注意:
Natural Security 環境では、このコマンドは 1 つのライブラリにのみ呼び出すことができます。 これは、ライブラリ名を省略するか、特定のライブラリを使用する必要があることを意味します。 アスタリスク(*)は使用できません。

Top of page

登録ファイルとタイプライブラリ

登録ファイル(".reg" ファイル)を実行すると、情報がシステムレジストリに入力されます。

Natural では、クラスの登録時にサーバー用とクライアント側用の登録ファイルが自動的に作成されます。

サーバー用の ".reg" ファイルには、システムレジストリに入力されたのと同じ情報が含まれます。クライアント用の ".reg" ファイルには、クライアント側用に生成されたすべての情報が含まれます。 クラスを登録解除すると、.reg ファイルは削除されます。 登録解除時に ".reg" ファイルが削除されないようにするには、クラスを登録解除する前に、ファイル名を変更します。Natural ではデフォルトの名前の ".reg" ファイルのみが削除されます。

".reg" ファイルの名前は、サーバー用は classmodule_name_S.reg、クライアント用は classmodule_name_C.reg、異なるバージョンをアクティブにする場合は classmodule_name_V.reg です。

タイプライブラリは、クラスの登録時に自動的に作成され、クラスの登録解除時に削除されます。 タイプライブラリへの参照はレジストリにも入力されます。

デフォルトのタイプライブラリ名は classmodule_name.tlb です。 この名前のタイプライブラリがすでに存在する場合は、別の名前が生成されます。

登録ファイルとタイプライブラリは、次のように Natural etc ディレクトリに保存されます。

$NATDIR/$NATVERS/etc/serverid/classname/v<version-number>

サーバー ID "SERVER01" に登録されたクラス MY.TEST.CLASS のバージョン 1 のファイルは、次のように配置されます。

$NATDIR/$NATVERS/etc/SERVER01/MY.TEST.CLASS/v1

Top of page

クライアントの登録

Natural では、クライアントの登録情報はシステムレジストリに自動的に入力されませんが、クライアント用の登録ファイルが作成されます。 クライアント用の登録ファイルには、DCOM サーバークラスを持つマシンを DCOM に通知するエントリ(RemoteServerName)が含まれます。 このエントリは Natural からは入力できません。 次のいずれかの方法で入力できます。

  1. 登録ファイルで RemoteServerName を入力できます。 以下の行を見つけます。

    "RemoteServerName"=

    以下のように変更します。

    "RemoteServerName"="server_machine_name"

    変更したら、登録ファイルをクライアントマシンで実行します。

  2. まず登録ファイルを実行し、次に DCOMCNFG ツールまたはレジストリエディタを使用して RemoteServerName を変更します(「Windows 上での DCOM コンフィグレーション」を参照)。

Top of page

登録のヒント

クラスを登録および登録解除するときは、以下の点を考慮してください。

Top of page