[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]
ここで説明する情報は本リリースに適用されます。
COM Version 1.0 for OpenVMSからCOM Version 1.1 for OpenVMSにアップグレードする場合は, 付録 Dと第4.3節に示すアップグレードの手順に従ってください。
COM for OpenVMS実行時環境では,
DCOM$RPCSS
プロセスが常に実行されている必要があります。
DCOM$RPCSS
が多くのCOM
for OpenVMSアプリケーション・サーバを作成または削除した後,
DCOM$RPCSS
がリソースをすべて消費してしまうことがあることがテスト中にわかりました。
この状況になると,
DCOM$RPCSS
は自動的に再起動しようとします。
DCOM$RPCSS
がシステムで実行されていない場合や,
ハングしているように見える場合は,次のコマンドを使用して
DCOM$RPCSS
をいったん停止した後,再起動してください。
$ @SYS$STARTUP:DCOM$SHUTDOWN $ @SYS$STARTUP:DCOM$STARTUP
SYS$MANAGER:DCOM$RPCSS.OUT
ファイル記録されているエラー・
メッセージと情報メッセージを確認できます。また,正常に動作していないアプリケーション・
サーバ・プロセスがないかどうか確認し,必要に応じてプロセスを停止する必要があります。
複数の浮動小数点パラメータ(単精度または倍精度)
をIDispatch
インタフェースに値で渡すときに,問題が発生することがあります。
複数の浮動小数点パラメータを使用するコンポーネント・メソッドは,
IDispatch
インタフェースを介してアクセスした場合,
予測できない動作で終了します。浮動小数点パラメータを参照で渡した場合は,
このエラーは発生しません。この制限は将来のリリースで解決される予定です。
COM for OpenVMSを実行するシステムには,
DECwindows Motif for OpenVMSをインストールしなければなりません。
DECwindows Motifがシステムにすでにインストールされている場合は,
改めてインストールする必要はありません。DECwindows Motifがシステムにインストールされていない場合は,OpenVMS Version 7.2-1
のCD-ROM
の[KITS.DWMOTIF125_KIT]
ディレクトリに格納されているDECwindows Motif
のインストール・キットを利用してください。
MIDLコンパイラでは,-w
または-warn
を指定することで,
コンパイラが生成する警告のレベルを下げることができます。OpenVMS
用のMIDLコンパイラでは,-w
スイッチだけがサポートされます。
COM for OpenVMSのこのリリースで,DEC Cバージョン5.7 またはそれ以前のバージョンを使用する場合,IDLファイル内のワイド文字のリテラル文字列は, 誤って"char"データ型として取り扱われます(DEC C バージョン6.0以上を使用している場合は,このリリース・ ノートは適用されません)。
たとえば,IDLファイルに次の文字列リテラルが格納されているとしましょう。
const wchar_t * PROGRAM_ID = L"Sample.Component";
Microsoft Windows NTでMIDLコンパイラを使用すると,次のマクロ定義が作成されます。
#define PROGRAM_ID ( L"Sample.Component" )
しかし,COM for OpenVMS用のMIDLコンパイラでは, デフォルトで次のマクロ定義が作成されます。
#define PROGRAM_ID ( "Sample.Component" )
この問題を回避するには,次の操作を行います。
プリプロセッサを使用せずにMIDLコンパイラを実行するには,コマンド・
ラインに-nocpp
または-no_cpp
スイッチを指定します。
次の例を参照してください。
$ midl -Oicf -nocpp -idcom$library: server.idl
#ifdef" . . .
"#endif"
)が含まれている場合は,この方法は使用しないでください。
この方法を使用すると,Microsoft Windows NTのMIDLコンパイラもOpenVMS のMIDLコンパイラも,ワイド文字ではない文字列定数を作成します。 ソフトウェアでワイド文字の文字列リテラルが必要な場合は, 値を使用する前に,ソフトウェアでANSI文字列をワイド文字の文字列に変換できます。
たとえば,文字列リテラルを次のように定義する代わりに,
const wchar_t * PROGRAM_ID = L"Sample.Component";
次に示すように,IDL cpp_quote()
の内部で
#define
を使用します。
cpp_quote("#define PROGRAM_ID L\"Sample.Component\"")
DEC Cプリプロセッサを使用する場合でも,Microsoft Windows NTとOpenVMS 用のMIDLコンパイラで作成される出力ヘッダ・ファイルは次のようになります。
#define PROGRAM_ID L"Sample.Component"
サーバ・コンポーネントがプロセス内サーバとしてだけ登録されている場合,
そのコンポーネントをOpenVMSでリモートからアクティブ化することはできません。
システムがプロセス内サーバをリモートからアクティブ化しようとすると,
リモート・クライアントは"REGDB_E_CLASSNOTREG
(80040154)"エラーを受信します。サーバ・コンポーネントをリモートからアクティブ化するには,
コンポーネントをプロセス外サーバとして登録し,
DCOM$RPCSS
プロセスがクライアントの代わりにコンポーネントを起動できるようにしなければなりません。
次の表は,COM Version 1.0 for OpenVMSとCOM Version 1.1 for OpenVMSの相違点を示しています。
領域 | COM Version 1.0 for OpenVMS | COM Version 1.1 for OpenVMS |
---|---|---|
クライアント要求 | Windows NTでは認証される。OpenVMSへの要求では認証されない。 | Windows NTとOpenVMSで認証される。 |
セキュリティ | Windows NTでは,サーバはクライアントのアイデンティティで動作でき,OpenVMS ではあらかじめ指定されたOpenVMSのアイデンティティで動作できる。 | Windows NTとOpenVMSの両方で,サーバはクライアントのアイデンティティで動作できる。 |
セキュリティ | Windows NTではメソッド単位のセキュリティが認められるが,OpenVMS ではプロセス単位のセキュリティだけが認められる。 | Windows NTとOpenVMSの両方で, メソッド単位のセキュリティが認められる。 |
アウトバウンドCOM要求 | Windows NTでのみ認証される。 | Windows NTとOpenVMSで認証される。 |
レジストリ | Windows NT: NTの資格情報で制御される。
OpenVMS:特権やライト識別子などのOpenVMSセキュリティ制御機能に依存する。 | Windows NT: NTの資格情報で制御される。
OpenVMS: Windows NTの資格情報またはOpenVMSセキュリティ制御によって制御される。 |
イベント・ログ | Windows NTのみ。 | Windows NTとOpenVMS の両方。 |
COM for OpenVMS DCOM$CNFG
ユーティリティには,開発者がアプリケーションのプロパティを変更するために使用できるオプションがいくつかあります(
たとえば,アプリケーションを実行できるコンピュータのロケーションの変更など)
。
これらのオプションを選択すると,OpenVMS
Registryエントリが変更されます。
OpenVMS Registryでは,クラスタ内で1つのデータベースがサポートされるので, これらのオプションのいずれかを変更すると,COM for OpenVMS を稼動しているクラスタ内のすべてのノードに影響があります。
たとえば,「System-wide Default Properties」
サブメニューのオプション1
を使用して,COM for
OpenVMSを無効化すると,クラスタ全体でCOM
for OpenVMSが無効化されます。同様に,「Application
Location」
サブメニューのオプション1を使用して,このコンピュータでアプリケーションを実行することを禁止すると,
クラスタ内のどのコンピュータでもそのアプリケーションを実行できなくなります。
COM Version 1.1 for OpenVMSでは,アプリケーション・ サーバに対してマルチスレッド・アパートメント(MTA,フリー・ スレッドとも呼ばれる)モデルのみがサポートされます。マルチスレッド・ アパートメント・モデルでは,コンポーネントは複数のスレッドを持つことができます。 しかし,コードがスレッド・セーフであることを確認する必要があります。
スレッド・モデルの初期化呼び出しは次のとおりです。
CoInitializeEx( NULL, COINIT_MULTITHREADED )
CoInitialize()
はシングル・スレッド・アパートメント(STA)
モデルを暗黙に示すので,サーバ・アプリケーションで
CoInitializeEx()
の代わりに使用することはできません。
COM for OpenVMSの以前のバージョンでは, 独立プロセスDCOM$RPCSSが実際に動作しているのか(つまり,初期化を完了したのか) ,まだ初期化中であるのかを確認できないことがありました。
今回のリリースでは,DCOM$RPCSS.EXEイメージが変更されており,状態に応じて異なるプロセス名が表示されるようになりました。DCOM$RPCSS.EXE イメージが初期化を実行している間は,プロセス名は"DCOM$STARTUP- **"になります。DCOM$RPCSS.EXEイメージが実行中の場合は,プロセス名は"DCOM$RPCSS" に変化します。プロセスが異常終了して再起動しなければならない場合は, プロセス名は"DCOM$STARTUP-**"に戻ります。
DCOM$STARTUP.COM
とDCOM$SHUTDOWN.COM
はどちらも,
いずれかのプロセス名を検索するように変更されています。
COM for OpenVMSの起動の詳細については, 第4.12節を参照してください。COM for OpenVMS のシャットダウンの詳細については, 第4.13節を参照してください。
CoQueryProxyBlanket()
とCoQueryClientBlanket()
APIは有効な主名文字列を返しません。
これらのAPIを使用して主名を取得することはできません。
ローカル・サーバ・パスに対して論理名を使用するCOMアプリケーションをすでに登録している場合は, ローカル・サーバ・パスの実際の名前を使用するようにアプリケーションを変更( 再登録)しなければなりません。
たとえば,REGISTER_SIMPLE.COM
コマンド・プロシージャを使用して,COM Version 1.0 for
OpenVMSで"Simple"アプリケーションを登録した場合は,新しい
REGISTER_SIMPLE.COM
コマンド・プロシージャを使用して"Simple"
アプリケーションを再登録する必要があります。
COM Version 1.1 for OpenVMSの登録コマンド・ ファイルは更新されています。
システムは次に示すように,COMアプリケーション・ローカル・サーバ・ パスを値データとしてOpenVMS Registryに格納します。
"HKEY_CLASSES_ROOT\CLSID\{GUID}\LOCALSERVER32"
ローカル・サーバ・パスを変更するには,次のREG$CPコマンドを使用します。
$ MCR REG$CP CREATE VALUE HKEY_CLASSES_ROOT\CLSID\{GUID}\Localserver32 - /TYPE=SZ/DATA=device:[directory]IMAGENAME.EXE
GUIDはCOMアプリケーションのCLSIDです。Localserver32とCLSIDの詳細については, 第6.5節を参照してください。
COM for OpenVMS MIDLコンパイラはMicrosoft のMIDLコンパイラV3.00.44を基礎にしているため,COM for OpenVMSでは,SAFEARRAY の使用は.IDL ファイル内のLIBRARYブロックの内部でのみサポートされます。Microsoft のMIDLコンパイラV3.00.44にも同じ制約があります。
クラスタ内のノードにCOM Version 1.1 for OpenVMSをインストールして構成する場合,同じクラスタ内の他のノードでCOM Version 1.0 for OpenVMS が実行されないように,OpenVMS Registry をクラスタ全体で変更しなければなりません。
COM Version 1.1 for OpenVMSでは, セキュリティの設定を含むように,OpenVMS Registryの値を再登録しなければなりません。DCOM$SETUPコマンドを使用して「OpenVMS COM Tools 」メニューを表示し,オプション3を選択します。
COM Version 1.1 for OpenVMSでOpenVMS Registryの値を再登録すると,
再登録を確認するメッセージが表示されます。
そのたびにYES
と応答します。次の例を参照してください。
[ Starting to Populate the COM for OpenVMS Registry ] Populating the Registry for OpenVMS may take up to 15 minutes depending on your system. Enter Y[ES] to continue: YES The COM for OpenVMS Registry has already been loaded. This action will overwrite the current COM for OpenVMS values and data. Enter Y[ES] to continue: YES
COM Version 1.1 for OpenVMSでは,次の制限のもとにNT SP4 がサポートされます。COM Version 1.1 for OpenVMSでは,拡張NTLMを有効にした状態でSP4はサポートされません。
COM Version 1.1 for OpenVMSをSP4と組み合わせて使用する場合は, 拡張NTLMが無効に設定されていることを確認してください。
SP4の拡張NTLMを無効にした状態では,SP4とCOM for OpenVMSは協調動作するように見えますが,SP4はCOM for OpenVMSと組み合わせて使用した状態で完全にテストされておらず, 公式にはサポートされません。
弊社で行ったSP4に関するテストでは,SP4と拡張NTLMを無効にした状態で,12 文字より長いパスワードを使用した場合,認証要求が失敗するという制限が確認されています。
COM for OpenVMSのこのリリースでは,信頼されるドメインの認証はサポートされません。 弊社はこの機能を提供するためにパッチ・ キットを準備しています。
キットが提供される時期については,COM
for OpenVMSのWebサイトを参照してください。COM for OpenVMSのWebサイトのアドレスは次のとおりです。
http://www.openvms.digital.com/openvms/products/dcom/
COM for OpenVMSのこのリリースでは, SECURITY_POLICYシステム・パラメータのIGNORE_EXTUATHフラグはサポートされません。 弊社はこの機能を提供するためにパッチを準備しています。
パッチの詳細については,COM for
OpenVMSのWebサイトを参照してください。COM for OpenVMSのWebサイトのアドレスは次のとおりです。
http://www.openvms.digital.com/openvms/products/dcom/
クラスタ内でDCOM$RPCSSを稼動しているシステムがクラッシュし,再起動すると,DCOM$RPCSS
プロセスは起動時にハングすることがあります。この状況では,
プロセス名はDCOM$STARTUP-**
のままであり,
SYS$STARTUP:DCOM$RPCSS.OUTファイルに次のエラー・メッセージが記録されます。
%PPL-W-SYSERROR, system service error -SYSTEM-W-VALNOTVALID, value block is not valid
この状態から回復するには,ストールされたプロセスを停止し,次のコマンドを入力してCOM for OpenVMS を再起動します。
$ @SYS$STARTUP:DCOM$STARTUP
2つのOpenVMSシステム間でCOMアプリケーションを実行するには,2つのOpenVMS システムがどちらも同じドメインに存在しなければなりません。 OpenVMSシステムが同じドメイン内にない場合は,メソッド呼び出し時に認証が失敗します。OpenVMS システムとWindows NTシステムの間でアプリケーションを実行している場合は, この制限は適用されません。
この制限をなくすために,弊社はパッチ・キットを準備しています。
キットの詳細については,COM for
OpenVMSのWebサイトを参照してください。COM for OpenVMSのWebサイトのアドレスは次のとおりです。
http://www.openvms.digital.com/openvms/products/dcom/
ここでは,特定のCOM for OpenVMSエラー・ メッセージについて説明します。
シングル・スレッド・アパートメント(STA)モデルを使用しようとすると, 一部のCOM APIで次の戻り状態コードが表示されることがあります。
(800706E4)
このモデルはCOM Version 1.1 for OpenVMSではサポートされません。詳細については,第1.1.10項を参照してください。
特定の状況で,Windows NTでクライアント・アプリケーションを実行し, OpenVMSでサーバ・アプリケーションを実行している場合,次のエラーが発生することがあります。
RPC server unavailable (800706BA)
このエラーに対処するには,サーバ・アプリケーションをいったん停止して再起動した後( アプリケーションを手動で起動した場合),クライアント・ アプリケーションを再起動します。
特定の状況で,クライアントとサーバの間で通信するときに,次のエラーが発生することがあります。
rpc_s_who_are_you_failed (EE1282FA)
このメッセージが表示された場合は,操作を再実行してください。
弊社はこの問題を解決するために,パッチを準備しています。
特定の状況で,クライアントとサーバの間で通信するときに,次のエラーが発生することがあります。
rpc_s_protocol_error (800706C0)
このメッセージが表示された場合は,操作を再実行してください。
弊社はこの問題を解決するために,パッチを準備しています。
[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]