- - PR -
MTS(COMSVCS.dll)を使うトランザクション処理?
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-03-08 13:49
お世話になっております。
標題の件にて困っております。 現在、カスタマイズ作業で MTSを使うトランザクション処理なるものを使用しているであろうシステムの改修 作業を行っています。 本来は引き継ぎ元の会社に確認を取るべきなのでしょうがいろいろな理由により 確認を取ることができません。 またマニュアルもない状況で大変困っており助けていただきたいと投稿させてもらいました。 環境は以下の通りです。(開発環境) OS:WINDOWS XP DB:SQL SERVER2000 言語:VB6.0 WEBサーバー:IISサーバー5.0 ASP3.0(開発した際のバージョン) あるDLLでエラーとなりデバッグができずに困っています。 Dim objContext As COMSVCSLib.ObjectContext Dim objApplication As ASPTypeLibrary.Application Dim objRequest As ASPTypeLibrary.Request Dim objResponse As ASPTypeLibrary.Response Dim objServer As ASPTypeLibrary.Server Set objContext = GetObjectContext ↑↑↑ objContextにオブジェクトがセットされません(objContext=NOTHINGとなります) ※GetObjectContext(COMSVCS.dll)のメソッドから返されません。 Set objApplication = objContext("Application") (質問) 1.GetObjectContextからは何が返されるのか? 2.環境が整っておらずエラーとなるのか? 7年程前のシステムで現状の環境とあっていない気がします MTS【Microsoft Transaction Server】は現在の環境では存在しない気がします まったく資料もなく始めて見る仕様でお手上げ状態です。 どうかわかる方いらっしゃればアドバイスをお願いいたします。 | ||||||||
|
投稿日時: 2009-03-10 20:49
Atata!!です。
ObjectContextが返されます。 http://msdn.microsoft.com/en-us/library/ms678909(VS.85).aspx
Windows2000Serverの時点で、MTSはCOM+サービスに統合されています。 その時点からMTSはCOM+サービスの一部としてサポートされています。 VB6の開発環境は通常COM+アプリケーションとして構成されていないので、ObjectContextを使用することはできません。 XPのIIS上で取得できていない場合、IISのアプリケーション保護の設定を見直してください。 最高レベルの保護を設定するとワーカープロセスがCOM+アプリケーションとして分離されます。 この状態であればGetObjectContextで取得できるはずです。(多分) | ||||||||
|
投稿日時: 2009-03-11 01:21
返信ありがとうございます。
さっそく確認をし追って報告いたします。 確認後、うまくいかない場合には再度、お力を貸してもらえればと 思います。 | ||||||||
|
投稿日時: 2009-03-12 01:14
XPのIIS上で取得できていない場合、IISのアプリケーション保護の設定を見直してください。
最高レベルの保護を設定するとワーカープロセスがCOM+アプリケーションとして分離されます。 この状態であればGetObjectContextで取得できるはずです。(多分) →アプリケーション保護の設定を「高(最高レベル」に設定し試しましたが やはり同じ個所でエラーとなりデバッグできませんでした。 他の設定も必要なようですがわかれば再度アドバイスをいただきたいと思います。 すみませんがよろしくお願いします。 | ||||||||
|
投稿日時: 2009-03-12 10:15
よく調べてみるとXPでもアプリケーション保護の設定に関係なく、 IISのワーカープロセスはCOM+アプリケーション上で動作していましたので、 この設定は関係なかったですね。 残った問題は作成しているアプリケーションがトランザクションを要求していないことぐらいでしょうかね。 次の点を確認してみてください。 1.ASPページ上で @TRANSACTION ディレクティブを指定しているか? 2.VB6で作成しているクラスモジュールで MTSTransactionMode に何を指定しているか? | ||||||||
|
投稿日時: 2009-03-13 22:15
自分で回答していておかしいと思ったのは
COM+アプリケーションではトランザクションの設定によって GetObjectContext の動作が変わるということはありえません。 で、検証してみましたが、どうやっても GetObjectContext からは ObjectContext が返されます。 こうなると確認することは以下の2点のみかと。 1.IIS 上で動作させていますか? 2.COMSVCS.DLL のタイプライブラリに含まれる GetObjectContext を使用していますか? | ||||||||
|
投稿日時: 2009-03-16 02:18
Atata!!様
返信、おそくなりすみません。 1.IIS 上で動作させていますか? →IIS上での動作とは? 開発環境であるXPにIISサーバーを立て一応はWEBの参照はできるようになっています が特にDLLをIIS上で何かをしているわけではありませんが何か必要なのでしょうか 2.COMSVCS.DLL のタイプライブラリに含まれる GetObjectContext を使用しています か? →すみません、 Dim objContext As COMSVCSLib.ObjectContext Set objContext = GetObjectContext←これではいけないのでしょうか それとも根本的に質問の意味が理解できていなければすみません。 注意してください。 お手数をお掛けしますがよろしくお願いします。 | ||||||||
|
投稿日時: 2009-03-16 15:20
どこで躓いているのかいまいちよくわからないので、基本的な確認ですが、作成したDLLは、COM+ コンポーネントとして登録しなければ動きません。(既に設定済みなら本投稿は無視してくださいー。) 「コントロールパネル」→「管理ツール」→「コンポーネントサービス」→「コンピュータ」→「マイコンピュータ」→「COM+ アプリケーション」 ここに空のライプラリを作って登録することになるかと。 実際の設定値は現稼働環境を参考にすることになると思います。 |