- PR -

ターミナルサーバでアウトプロセスOLEサーバを使用する方法

1
投稿者投稿内容
とんぼ
会議室デビュー日: 2005/10/10
投稿数: 9
お住まい・勤務地: 大阪
投稿日時: 2007-04-22 20:39
WinServer2003を使用して、ツール等のアプリケーションの管理をTerminalServerを構築して運用したいと思っています。

共通アプリケーション(弊社で開発)をTerminalServerにインストールしてみたのですが、
アウトプロセスのOLEサーバが至要できません。
ユーザ別に管理されているので、当然と言えば当然みたいなのですが、何とかアウトプロセスOLEサーバを使いたいのですが、どうしたら良いのでしょうか?
アプリ環境
 ホストにアプリケーションをインストールする。
 ユーザは、操作画面を起動する。
 操作画面は、アウトプロセスOLEサーバを使用して処理を行なう。
 アウトプロセスOLEサーバでは全ユーザ共通の情報を管理・更新している。

RPCで接続する事ができれば簡単なのかと思いますが、VirtualServerで無くてTerminalServerなのでどうしたら良いのか見えてきません。
これから、調べなければ成らないのですが、何方かご存知の方いらっしゃいましたら
ご教授お願いします。

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-04-23 10:32
状況が分かりにくいです。

アウトプロセスサーバつってもその振る舞いにはいろいろあるわけです。
この世に存在するすべてのアウトプロセスサーバが Terminal Service 環境下で正しく動かないかっつーとそんなことも無いわけです。

具体的に、その運用を希望しているアウトプロセスサーバがどのように振舞うことを期待していて、実際にはどう振舞ってしまっていて都合が悪いのかを、もう少し詳しく説明してください。

サーバ設定程度で回避できる場合もあれば、最悪、アウトプロセスサーバおよび操作画面に改修をかけないと動作しない場合もあると思いますよ。

引用:

RPCで接続する事ができれば簡単なのかと思いますが、VirtualServerで無くてTerminalServerなのでどうしたら良いのか見えてきません。



なんてあたりも僕的には意味不明。
とんぼ
会議室デビュー日: 2005/10/10
投稿数: 9
お住まい・勤務地: 大阪
投稿日時: 2007-04-23 15:16
渋木さんレス有難うございます。

運用方法は、下記の様に作っています。
単純化して書きます。

1.共通OLEサーバExe
  レジストリーにGUIDが登録される。
  各2,3のプログラムは、CreateObjectでオブジェクトを生成してアクセスする。
2.外部機器監視プログラム
3.ユーザ画面プログラム

(1)外部機器監視プログラムが、機器の状態を共通OLEサーバにデータを書き込む
(2)ユーザAは、画面プログラムで機器の状態が正常で有る事を確認して、機器を使用する旨   を共通OLEサーバの変数に宣言する(フラグを立てる)
(3)ユーザBは、機器の状態と他のユーザが使用していない時のみ、希望する機器を使用する   事ができる。
(4)ユーザAは、機器を使用しての作業が終ったらフラグを倒す。
(5)ユーザBは、機器の状態が空いたので、その機器を使用できるようになる。
以上のような事を実現したいと思っています。

外部機器監視プログラムと、OLEサーバは一つだけ立ち上がり、ユーザ画面はLogInしたPC操作できる。
LoginユーザからOlEサーバにアクセスできないのは、ユーザの管理情報の中にレジストリ情報が無いからだと思います。

宜しくお願いします。



ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-23 15:52
change user /install で install mode を変更して install していますか?

引用:

とんぼさんの書き込み (2007-04-23 15:16) より:

(1)外部機器監視プログラムが、機器の状態を共通OLEサーバにデータを書き込む
(2)ユーザAは、画面プログラムで機器の状態が正常で有る事を確認して、機器を使用する旨   を共通OLEサーバの変数に宣言する(フラグを立てる)
(3)ユーザBは、機器の状態と他のユーザが使用していない時のみ、希望する機器を使用する   事ができる。
(4)ユーザAは、機器を使用しての作業が終ったらフラグを倒す。
(5)ユーザBは、機器の状態が空いたので、その機器を使用できるようになる。



Out process COM server でもこういう要件だと、user と別の資格情報じゃないと実現できないんじゃないんでしょうか?
# COM+ server application とか Windows Service 使う?

Administrators とかの member でもない限りほかの user の process を覗けないと思うので。
たぶん普通にやると user の数分 process が立ち上がるような気がします。
_________________
とんぼ
会議室デビュー日: 2005/10/10
投稿数: 9
お住まい・勤務地: 大阪
投稿日時: 2007-04-23 17:06
ちゃっぴさん 有難うございます。

引用: --------------------------------------------------------------------------
change user /install で install mode を変更して install していますか?
------------------------------------------------------------------------------
この件は、意識の中に有りませんでした。
調べます。

現在、このプログラムは、複数ユーザでリモートで接続して動作はしています。
Windows2Kのマシンをサーバマシンとして監視プログラムと共通OLEサーバExe を入れて
クライアントマシンでは、サーバマシンの共通OLEサーバExe にCOMで接続しています。
クライアントから接続する場合は、クライアントプログラムでマシン名を指定してオブジェクトを生成しています。
OLEサーバの設定をマルチインスタンスでクライアントからの要求はシリアル化して競合が起きないように動作するように作成しています。

今回やりたいのは、
このプログラム全部をターミナルサーバマシンにインストールして
リモートデスクトップでユーザ画面を使用したいと思っています。

私の考えている構成では
1.ターミナルサーバマシンで、共通OLEサーバExe と外部機器監視プログラム が動作する
2.ユーザはクライアントマシンからユーザ画面プログラム を起動する。
3.ユーザ画面プログラム はサーバマシンで動作している共通OLEサーバExeに接続して
  データを共有し、同期を取りながら動作する。

サーバマシンでは、共通OLEサーバExe と外部機器監視プログラムが一つだけ動作している必要が有ります。
各ユーザが起動した、画面プログラムはサーバー上で動作している共通OLEサーバExeのインスタンスを生成して動作します。

ユーザに開放する共通プログラムとしては、画面プログラムだけに成ります。
当然、ユーザのシステム情報に共通OLEサーバExeのGUIDを登録しないと、共通OLEサーバExeに接続できないと思います。

宜しくお願いします。


ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2007-04-24 00:09
引用:

とんぼさんの書き込み (2007-04-23 17:06) より:
現在、このプログラムは、複数ユーザでリモートで接続して動作はしています。
Windows2Kのマシンをサーバマシンとして監視プログラムと共通OLEサーバExe を入れて
クライアントマシンでは、サーバマシンの共通OLEサーバExe にCOMで接続しています。
クライアントから接続する場合は、クライアントプログラムでマシン名を指定してオブジェクトを生成しています。
OLEサーバの設定をマルチインスタンスでクライアントからの要求はシリアル化して競合が起きないように動作するように作成しています。



ということは、DCOM で今までは RPC 通信していた?

引用:

今回やりたいのは、
このプログラム全部をターミナルサーバマシンにインストールして
リモートデスクトップでユーザ画面を使用したいと思っています。

私の考えている構成では
1.ターミナルサーバマシンで、共通OLEサーバExe と外部機器監視プログラム が動作する
2.ユーザはクライアントマシンからユーザ画面プログラム を起動する。
3.ユーザ画面プログラム はサーバマシンで動作している共通OLEサーバExeに接続して
  データを共有し、同期を取りながら動作する。

サーバマシンでは、共通OLEサーバExe と外部機器監視プログラムが一つだけ動作している必要が有ります。
各ユーザが起動した、画面プログラムはサーバー上で動作している共通OLEサーバExeのインスタンスを生成して動作します。

ユーザに開放する共通プログラムとしては、画面プログラムだけに成ります。
当然、ユーザのシステム情報に共通OLEサーバExeのGUIDを登録しないと、共通OLEサーバExeに接続できないと思います。



本当に registry の問題ですかね?Trace 取ってみました?
DCOM の secrity とか絡んでいません?

違うかもしれないけど、Windows 2000 Server から Windows Server 2003 への移行で DCOM が default 匿名通信を受け付けないようになったため動かなくなったことがありました。
_________________
とんぼ
会議室デビュー日: 2005/10/10
投稿数: 9
お住まい・勤務地: 大阪
投稿日時: 2007-04-24 10:00
ちゃっぴさん貴重な情報有難うございます。

DCOMでのRPCは、動作しています。
回線異常(ハブの電源・ケーブル接続)が有るとエラー処理が厄介ですが
何とか動作していました。
CORBA等導入すると異常処理は、もっとスッキリしてると思うのですが
そこまで行なっていません。

引用:
--------------------------------------------------------------------------------
本当に registry の問題ですかね?Trace 取ってみました?
DCOM の secrity とか絡んでいません?

違うかもしれないけど、Windows 2000 Server から Windows Server 2003 への移行で DCOM が default 匿名通信を受け付けないようになったため動かなくなったことがありました。
--------------------------------------------------------------------------------
トレース等は、取れていませんが、2003サーバ(ターミナルサーバ導入済み)にインストールして、そこで動作させると問題無く動作しているように見えます。

他の作業で中断していて、細かい検証を行なっていないので、申し訳無いのですが
こう言った事象を経験されて居られる方が有ればと思い投稿させて頂きました。

色々とご教授頂いた内容を参考に、もう一度調べなおしてみます。
ターミナルサーバは初めてですので、調べていくうちに解らない点が有りましたら
このスレッドで質問させて頂きますので、今後とも宜しくお願いします。

追記
 資料を見ていると、WinNT、Win2000、Win2003とセキュリティの設定等は複雑に成っているようですね。
 ただ、導入ツールは充実してきているようですが、初めてなもので基礎が無く簡単な問題も途惑ってしまいます。
今後とも宜しくお願いします。

1

スキルアップ/キャリアアップ(JOB@IT)