次の方法で共有


COM+ アプリケーションのリサイクル値の構成

次の方法を使用して、COM+ アプリケーションのアプリケーション リサイクル値を構成できます。

Note

Windows サービスとして実行するように構成されている COM+ アプリケーションをリサイクルすることはできません。 また、ライブラリ アプリケーションには、ホスト プロセスのリサイクルとプールのプロパティがあります。

 

コンポーネント サービス管理

COM+ アプリケーションのアプリケーション リサイクルを構成するには、次の手順に従います。

  1. コンポーネント サービス管理ツールのコンソール ツリーで、リサイクルする COM+ サーバー アプリケーションを右クリックし、[プロパティ] をクリックします

  2. [プールとリサイクル] タブで、使用する条件に応じて、[有効期間の制限 (分)]、[メモリ制限 (KB (キロバイト))]、[有効期限のタイムアウト (分)]、[呼び出しの制限]、[アクティブ化の制限] の値を入力します。

    • 有効期間の制限 は、プロセスがリサイクルされるまでに実行できる最大時間 (分) を示します。 有効な範囲は 0 ~ 30,240 分 (21 日) です。 既定の呼び出し回数は 5 です。
    • メモリ制限 は、プロセスをリサイクルする前のプロセス メモリ使用量の最大量 (KB 単位) を示します。 プロセスのメモリ使用量が指定した数を超えた場合、プロセスはリサイクルされます。 有効な範囲は 0 ~ 1,048,576 KB (キロバイト)で、既定のメモリ使用量は 0 KB (キロバイト)です。
    • 有効期限のタイムアウト は、プロセス内のオブジェクトへのすべての外部参照を解放するために、強制的にシャットダウンされるまでの待機時間 (分) を示します。 有効な範囲は 1 ~ 1440 分 (24 時間) で、既定の有効期限のタイムアウトは 15 分です。 この値は、他の条件に基づいてプロセスがリサイクルされると既に判断されている場合にのみ使用されます。
    • 呼び出し制限 は、プロセスをリサイクルする前にアプリケーション オブジェクトが受け入れることができる呼び出しの最大数を示します。 有効な範囲は 0 ~ 1,048,576 呼び出しで、既定の呼び出し数は 0 です。
    • アクティブ化の制限 は、プロセスをリサイクルする前に受け入れるアプリケーション オブジェクトのアクティブ化の最大数を示します。 有効な範囲は 0 から 1,048,576 のアクティブ化であり、アクティブ化の既定の数は 0 です。

    Note

    [有効期間の制限]、[メモリ制限]、[呼び出し制限]、または [アクティブ化の制限] の値が 0 (既定値) に設定されている場合、その条件に対するアプリケーションのリサイクルは無効になります。 これらの 4 つの条件がすべて 0 に設定されている場合、選択したアプリケーションに対してアプリケーションのリサイクルが無効になります。

     

  3. OK をクリックします。

Visual Basic

Microsoft Visual Basic の次の関数は、選択した COM+ サーバー アプリケーションのアプリケーション リサイクル値を設定する方法を示しています。 Visual Basic から使用するには、COM+ 管理 タイプ ライブラリへの参照を追加します。

Function SetMyApplicationRecycling( _
  strApplicationName As String, _
  lngLifetimeLimit As Long, _
  lngMemoryLimit As Long, _
  lngCallLimit As Long, _
  lngActivationLimit As Long, _
  lngExpirationTimeout As Long _
) As Boolean  ' Return False if any errors occur.

    SetMyApplicationRecycling = False  ' Initialize the function.
    On Error GoTo My_Error_Handler  ' Initialize error handling.

    Dim objCatalog As COMAdmin.COMAdminCatalog
    Dim objAppCollection As COMAdmin.COMAdminCatalogCollection
    Dim objApplication As COMAdmin.COMAdminCatalogObject
    Set objCatalog = CreateObject("COMAdmin.COMAdminCatalog")
    Set objAppCollection = objCatalog.GetCollection("Applications")
    objAppCollection.Populate
    For Each objApplication In objAppCollection
        With objApplication
            If .Name = strApplicationName Then
                .Value("RecycleLifetimeLimit") = lngLifetimeLimit
                .Value("RecycleMemoryLimit") = lngMemoryLimit
                .Value("RecycleCallLimit") = lngCallLimit
                .Value("RecycleActivationLimit") = lngActivationLimit
                .Value("RecycleExpirationTimeout") = lngExpirationTimeout
                MsgBox strApplicationName & _
                  " recycling values are now set to the following: " & _
                  vbNewLine & vbNewLine & _
                  "Lifetime Limit = " & lngLifetimeLimit & vbNewLine & _
                  "Memory Limit = " & lngMemoryLimit & vbNewLine & _
                  "Call Limit = " & lngCallLimit & vbNewLine & _
                  "Activation Limit = " & lngActivationLimit & vbNewLine _
                  & "Expiration Timeout = " & lngExpirationTimeout
                Exit For
            End If
        End With
    Next
    objAppCollection.SaveChanges
    Set objApplication = Nothing
    Set objAppCollection = Nothing
    Set objCatalog = Nothing
    SetMyApplicationRecycling = True  ' Successful end to procedure
    Exit Function
    
My_Error_Handler:  ' Replace with specific error handling.
    MsgBox "Error # " & Err.Number & " (Hex: " & Hex(Err.Number) _
      & ")" & vbNewLine & Err.Description
    Set objApplication = Nothing
    Set objAppCollection = Nothing
    Set objCatalog = Nothing
End Function

この関数を使用するには、アプリケーション名の文字列値と、目的のアプリケーションリサイクル設定の整数値を指定します。 次の Visual Basic コードは、RecycleLifetimeLimit 値を 5、RecycleMemoryLimit 値を 10、RecycleCallLimit 値を 9、RecycleActivationLimit 値を 100、RecycleExpirationTimeout 値を 15 に設定する方法を示しています。

Sub Main()
    If Not SetMyApplicationRecycling("MyApp", 5, 10, 9, 100, 15) Then
        MsgBox "SetMyApplicationRecycling failed."
    End If
End Sub

COM+ アプリケーション リサイクルの概念