プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Serverサーバーの起動と停止の管理
12c (12.2.1.3.0)
E90348-04
目次へ移動
目次

前
次

3 WindowsサービスとしてのWebLogic Serverインスタンスの設定

Windowsサービスにより、Windowsホスト・コンピュータの起動時にOracle WebLogic Serverを自動的に起動できます。Windowsサービスを使用すると、データを失わずにサーバー・インスタンスを円滑に停止または再起動し、単一のインスタンスに対して複数のユーザー資格証明を管理できます。Windowsでは、Microsoft 管理コンソール(MMC)、特に「サービス」で、Windowsサービスを開始、停止、および構成します。

WebLogic Serverでは、Windowsサービスとして設定したサーバー・インスタンスごとに、Windowsレジストリ内(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services)にキーが作成されます。このレジストリ・エントリには、サーバー名をはじめとする起動引数の情報が含まれています。

Windowsホストを起動するとき、Microsoft管理コンソールはWindowsレジストリ・キーの情報を使用してweblogic.Serverメイン・クラスを呼び出します。MMCは、ノード・マネージャを使用して管理対象サーバーを起動するように構成できないので、Windowsサービスとして実行しているサーバーでは、ノード・マネージャのモニター機能と自動再起動機能は使用できません。

ここでは、Windowsサービスとして実行するWebLogic Serverインスタンスを設定および管理する手順について説明します。

Windowsサービスの設定:主なステップ

Windowsサービスにより、ユーザー・インタフェースなしでバックグラウンドで長期間動作する実行可能アプリケーションを作成できます。Windowsサービスは、Windowsレジストリ・キー内の情報を使用してweblogic.Serverメイン・クラスを呼び出すサーバー固有のスクリプトを実行することで設定できます。サーバー固有のスクリプトを実行する前に、管理サーバーおよび管理対象サーバーに必要な接続とJavaクラスを必ず構成または有効にする必要があります。

Windowsサービスを設定するには:

  1. サーバー固有の変数を設定するスクリプトを作成し、WebLogic Serverマスター・スクリプトを呼び出します。「サーバー固有のスクリプトの作成」を参照してください。
  2. 管理対象サーバーをWindowsサービスとしてインストールする場合は、ドメインの管理サーバーの場所を示す変数を、サーバー固有のスクリプトに追加します。「管理サーバーへの接続の構成」を参照してください。
  3. 同じコンピュータでWindowsサービスとして実行する管理サーバーと管理対象サーバーの両方を設定したら、WebLogic Serverマスター・スクリプトを変更して、管理サーバーの起動サイクルが完了した後にのみ管理対象サーバーが起動されるようにします。「管理サーバーと管理対象サーバーの起動順序の強制」を参照してください。
  4. Windowsサービスを停止したときに、サーバー・インスタンスを正常に停止させたい場合は、Javaクラスを作成し、Microsoft管理コンソールによってそのクラスが呼び出されるようにマスター・スクリプトを変更します。「正常停止の有効化」を参照してください。
  5. サーバー・インスタンスから標準出力および標準エラーに出力されるメッセージ(スタック・トレースやスレッド・ダンプを含む)を表示したい場合は、標準出力および標準エラーをファイルにリダイレクトします。「標準出力および標準エラーのファイルへのリダイレクト」を参照してください。
  6. WebLogic Serverインスタンスから呼び出す追加のJavaクラスを作成した場合は、それらをサーバーのクラスパスに追加します。「クラスパスへのクラスの追加」を参照してください。
  7. サーバー固有のスクリプトを実行します。「サーバー固有のスクリプトの実行」を参照してください。

サーバー固有のスクリプトの作成

ここで作成するスクリプトでは、サーバー固有の情報(サーバー・インスタンス名など)を特定するための変数に値を設定する必要があります。また、このスクリプトからマスター・スクリプトWL_HOME\server\bin\installSvc.cmd (WL_HOMEはWebLogic Serverのインストール・ディレクトリ)を呼び出す必要もあります。マスター・スクリプトからは、Windowsレジストリにキーを追加するwlsvcユーティリティが呼び出されます。

ノート:

Windowsサービスのインストール時、wlsvcユーティリティの-svcdescription:<user_specified_service_description>オプションを使用してサービスの説明を指定できます。サービスの説明は、環境変数SERVICE_DESCRIPTIONを設定してからinstallSvc.cmdスクリプトを実行することでも指定できます。

wlsvcの詳細は、コマンド・プロンプトにWL_HOME\server\bin\wlsvc -helpを入力します。この場合、WL_HOMEは、WebLogic Serverのインストール・ディレクトリです。

サーバー固有のスクリプトのサンプルについては、例3-1を参照してください。

サーバー固有のスクリプトを作成するには:

  1. ドメインの管理サーバーのルート・ディレクトリにテキスト・ファイルを作成します。
  2. このテキスト・ファイルに、以下に示す必須batchコマンドを追加します。各コマンドは別々の行に記述してください。
    • SETLOCAL

      これは、バッチ・ファイル内の環境変数のローカライゼーションを開始するbatchコマンドです。

    • set DOMAIN_NAME=domain-name

      domain-nameは、WebLogic Serverドメインの名前です。

    • set USERDOMAIN_HOME=absolute-pathname

      absolute-pathnameは、管理サーバーのルート・ディレクトリ(ドメインの構成ファイルが格納されているディレクトリ)のフルパス名です。『Oracle WebLogic Serverドメイン構成の理解』のサーバーのルート・ディレクトリの指定に関する項を参照してください。

    • set SERVER_NAME=server-name

      server-nameは、Windowsサービスとして設定する既存のサーバー・インスタンスの名前です。

    • set WL_HOME= wlserver

      この場合、wlserverはWebLogicインストール・ルート・ディレクトリの名前です。

  3. このテキスト・ファイルに、以下に示す省略可能batchコマンドを追加します。各コマンドは別々の行に記述してください。
    • set WLS_USER=username

    • set WLS_PW=password

      usernameは、サーバー・インスタンスを起動する権限を持つ既存のユーザーの名前、passwordはそのユーザーのパスワードです。wlsvcユーティリティでは、ログイン資格証明が暗号化され、Windowsレジストリに格納されます。

      この方法は、サーバー・インスタンスが起動した時、ユーザー名とパスワードのプロンプトを回避するための2つのうちの1つの実行可能な方法です。この方法を使用するメリットは、サーバー・インスタンスのユーザー名またはパスワードを変更する場合は、Windowsサービスを削除し、新しいユーザー名とパスワードで新規のサービスを設定することが必要になるところにあります。かわりに、起動IDファイルも使用できます。起動IDファイルを使用して、Windowsサービスを変更することなく、ログイン資格証明を変更できます。「起動IDファイル」を参照してください。

    • set PRODUCTION_MODE=[true]

      PRODUCTION_MODE変数をtrueに設定すると、サーバー・インスタンスは本番モードで起動します。この変数が指定されていない場合、またはfalseに設定されている場合は、サーバーは開発モードで起動します。『構成ウィザードによるWebLogicドメインの作成』サーバー起動モードの構成に関する項を参照してください。

    • set JAVA_OPTIONS=java-options

      java-optionsは、Java仮想マシン(JVM)に渡す1つまたは複数のJava引数です。複数の引数を指定する場合はスペースで区切ります。WebLogic Server固有のJavaオプションのリストについては、『Oracle WebLogic Serverコマンド・リファレンス』「weblogic.Serverコマンド・ライン・リファレンス」を参照してください。ご使用のJVMでサポートされた追加オプションがJVMベンダーによりドキュメント化されています。

    • set JAVA_VM=-JVM-mode

      JVM-modeは、JVMの実行モードを示すテキスト文字列です。指定する値は、使用しているJVMごとに異なります。

    • set MEM_ARGS=[-XmsNumberm] [-XmxNumberm]

      Numbermは、MB単位の数値です。-XmsNumberm引数はJVMの最小ヒープ・サイズを、-XmxNumberm引数はJVMの最大ヒープ・サイズを設定します。デフォルトの最小ヒープ・サイズは23MB、最大ヒープ・サイズは200MBです。

      ノート:

      デフォルト以外のJVMヒープ・サイズを指定するには、WL_HOME\common\bin\commEnv.cmdMEM_ARGS値を設定します。ただし、この変更は同じWL_HOME以下のすべてのドメインに影響します。

    • set MAX_CONNECT_RETRIES=number_of_attempts

    • set HOST=ip_address

    • set PORT=port_number

      number_of_attemptsは、WebLogic Serverインスタンスが起動しているかどうかを判断するために、Windowsサービスでステータスのチェックを実行する回数です。この変数とともにHOSTおよびPORTを指定すると、WebLogic Serverインスタンスが起動するまでWindowsサービスが待機します。ip_addressはWebLogic ServerインスタンスのIPアドレスで、port_numberはWeblogic Serverインスタンスがリクエストをリスニングするポートです。

  4. スクリプトの末尾に、以下に示す必須のコマンドを追加します。
    • call " WL_HOME\user_projects\domains\base_domain\bin\setDomainEnv.cmd"

      WL_HOMEは、WebLogic Serverのインストール・ディレクトリのフルパス名です。このコマンドにより、ドメインレベルの環境変数が設定されます。

    • call "WL_HOME\server\bin\installSvc.cmd"

      WL_HOMEは、WebLogic Serverのインストール・ディレクトリのフルパス名です。このコマンドにより、WebLogic Serverのマスター・スクリプトが呼び出されます。

    • ENDLOCAL

      これは、バッチ・ファイル内の環境変数のローカライゼーションを終了するbatchコマンドです。

  5. このテキスト・ファイルを、拡張子.cmdで保存します。デフォルトでは、Windowsコマンド・プロンプトによって拡張子.cmdbatchファイルが関連付けられます。

管理サーバーへの接続の構成

管理対象サーバーをWindowsサービスとしてインストールする場合は、ドメインの管理サーバーの場所を示す変数を含める必要があります。管理対象サーバーの構成データは、管理対象サーバーから管理サーバーにアクセスして取得する必要があります。

また、先に管理サーバー(サービスではなく実際のサーバー)を起動し、その後で管理対象サーバーをWindowsサービスとして開始する必要があります。

管理サーバーへの接続を構成するには:

  1. テキスト・エディタで、そのサーバー固有のスクリプトをオープンします。
  2. このテキスト・ファイルで、SETLOCALコマンドとcallコマンドの間に次のコマンドを挿入します。
    set ADMIN_URL=protocol://listen-address:listen-port 
    

    説明:

  3. サーバー固有のスクリプトへの変更内容を保存します。

例3-1 管理対象サーバーをWindowsサービスとして設定するスクリプトのサンプル

echo off
SETLOCAL
set MW_HOME=C:\Oracle\Middleware\Oracle_Home
set DOMAIN_NAME=base_domain
set USERDOMAIN_HOME=C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain
set SERVER_NAME=ManagedServer
set ADMIN_URL=http://10.xxx.xx.xx:7001
set WL_HOME=C:\Oracle\Middleware\Oracle_Home\wlserver
set PRODUCTION_MODE=true
set MEM_ARGS=-Xms128m -Xmx512m
call "C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\bin\setDomainEnv.cmd"
call "C:\Oracle\Middleware\Oracle_Home\wlserver\server\bin\installSvc.cmd"
ENDLOCAL

ノート:

このスクリプトのサンプルを使用して管理サーバーをWindowsサービスとして設定するには、ADMIN_URL変数を削除します。

例をコピー・アンド・ペーストするとき、末尾のスペースがないことを確認してください。

WLS_USERおよびWLS_PWはオプションで、起動IDファイルが使用されていない場合にのみスクリプトに追加できます。「サーバー固有のスクリプトの作成」を参照してください。

管理サーバーと管理対象サーバーの起動順序の強制

同じコンピュータでWindowsサービスとして実行する管理サーバーと管理対象サーバーの両方を設定したら、管理サーバーの後にのみ起動する管理対象サーバーを指定できます。

管理対象サーバーが、必ず管理サーバーWindowsサービスの後に起動されるようにするには:

  1. WL_HOME\server\bin\installSvc.cmdマスター・スクリプトのバックアップ・コピーを作成します。

  2. 管理サーバーがすでにWindowsサービスとしてインストールされている場合は、そのサービスを削除します。「Windowsサービスとして設定されているサーバーの削除」を参照してください。

  3. 管理サーバーをWindowsサービスとしてインストール(または再インストール)する前に、以下を行います。

    1. テキスト・エディタで、WL_HOME\server\bin\installSvc.cmdマスター・スクリプトをオープンします。

      スクリプト内の最後のコマンドは、wlsvc (Windowsレジストリを変更するWebLogic Serverユーティリティ)を呼び出すコマンドです。

    2. installSvc.cmd内で、wlsvcユーティリティを呼び出すコマンドに次の引数を追加します。

      -delay:delay_milliseconds 
      

      Microsoft管理コンソールが、サービス・ステータスをSERVER_START_PENDINGからSTARTEDへ変更するまで待機するミリ秒数を指定します。

      たとえば、管理サーバーがその起動サイクルを完了してリクエストをリスニングできる状態になるまでに2分かかる場合は、-delay=120000のように指定します。この場合、Windowsホスト・コンピュータを起動すると、Microsoft管理コンソールによってSERVER_START_PENDINGステータスが2分間報告されます。その後、ステータスがSTARTEDに変更されます。

      この管理サーバーの変更後のwlsvc呼出しは次のようになります。

      "%WL_HOME%\server\bin\wlsvc" -install 
      -svcname:"%DOMAIN_NAME%_%SERVER_NAME%" 
      -delay:120000
      -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" 
      -extrapath:"%WL_HOME%\server\bin" -password:"%WLS_PW%" 
      -cmdline:%CMDLINE%
      

      wlsvcの詳細は、コマンド・プロンプトにWL_HOME\server\bin\wlsvc -helpを入力します。この場合、WL_HOMEは、WebLogic Serverのインストール・ディレクトリです。

  4. 管理サーバーWindowsサービスをインストールします。

  5. 管理対象サーバーをWindowsサービスとしてインストールする前に、次の手順に従います。

    1. テキスト・エディタで、WL_HOME\server\bin\installSvc.cmdマスター・スクリプトをオープンします。

    2. installSvc.cmd内で、wlsvcユーティリティを呼び出すコマンドに次の引数を追加します。

      -depend:Administration-Server-service-name 

      Administration-Server-service-nameは、管理サーバーWindowsサービスの名前です。サービス名を確認するには、「サービス」にあるMicrosoft管理コンソールを参照します。

      このオプションを指定した場合、Microsoft管理コンソールは、管理サーバーWindowsサービスによるSTARTEDステータスの報告を待機してから、管理対象サーバーWindowsサービスを開始します。

      この管理対象サーバーの変更後のwlsvc呼出しは次のようになります。

      "%WL_HOME%\server\bin\wlsvc" -install 
      -svcname:"%DOMAIN_NAME%_%SERVER_NAME%" 
      -depend:"wlsvc myDomain_myAdminServer"
      -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" 
      -extrapath:"%WL_HOME%\server\bin" -password:"%WLS_PW%" 
      -cmdline:%CMDLINE%
      

      また、Microsoft管理コンソールがサービスのSTARTEDステータスをいつ報告するかを構成したい場合は、管理対象サーバーWindowsサービスに-delay:delay_millisecondsオプションを追加できます。

正常停止の有効化

デフォルトでは、Microsoft管理コンソールを使用してサーバー・インスタンスを停止すると、サーバーのJava仮想マシン(JVM)を強制停止します。JVMを強制停止すると、サーバーはただちにすべての処理を終了します。セッション・データはすべて失われます。サーバーがconfig.xmlファイルへの書込みを行っている間に管理サーバーのJVMを強制停止すると、config.xmlファイルが破損するおそれがあります。

Microsoft管理コンソールから正常停止を可能にするには:

  1. weblogic.management.runtime.ServerRuntime.shutdown()メソッドを呼び出すJavaクラスを作成します。

    このメソッドは、処理中のすべての作業を完了してからサーバーを正常に停止します。このようなクラスの例については、「サーバー・インスタンスを停止するJavaクラス」を参照してください。

  2. WL_HOME\server\bin\installSvc.cmdマスター・スクリプトのバックアップ・コピーを作成します。

  3. テキスト・エディタで、WL_HOME\server\bin\installSvc.cmdマスター・スクリプトを開いて以下を行います。

    1. 前の手順で作成したクラスを、set CLASSPATH文に追加します。

      たとえば、クラスをc:\myJarというファイルにアーカイブした場合、変更後の文は次のようになります。

      set
      CLASSPATH=%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp
      .jar;%WL_HOME%\server\lib\weblogic.jar;c:\myJar;%CLASSPATH% 
      
    2. スクリプトの最後の行に次の引数を追加します。この行はwlsvcユーティリティを呼び出します。

      -stopclass:javaclass 
      

      javaclassは、作成したクラスの完全なクラスパス名です。この引数を指定することにより、javaclassがロードされてから、そのpublic void static stop()メソッドが呼び出されます。

      たとえば、例3-2のクラスをcom.myClassesにパッケージ化した場合、変更後のwlsvcコマンドは次のようになります。

      "%WL_HOME%\server\bin\wlsvc" -install
      -svcname:"%DOMAIN_NAME%_%SERVER_NAME%"
      –stopclass:com.myClasses.ServerStopper 
      -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%"
      -extrapath:"%WL_HOME%\server\bin" -password:"%WLS_PW%" 
      -cmdline:%CMDLINE%
      

      wlsvcの詳細は、コマンド・プロンプトにWL_HOME\server\bin\wlsvc -helpを入力します。この場合、WL_HOMEは、WebLogic Serverのインストール・ディレクトリです。

  4. WebLogicサーバーの管理コンソールで、サーバーの「制御」ページで管理対象サーバーの正常停止動作を構成します。

    正常な停止操作において、すべてのHTTPセッションをただちに中止するかどうかを設定したり、停止を強制するまでの待機時間を構成したりできます。『Oracle WebLogic Server Administration Console オンラインヘルプ 』正常な停止の制御に関する項を参照してください。

  5. Windowsサービスによって指定されているデフォルトのタイムアウト値を変更すべきかどうかを検討してください。

    デフォルトでは、Microsoft管理コンソールを使用してWindowsサービスを停止する場合、サービスが停止するまで30秒待機してからサービスを強制停止し、システム・イベント・ログにタイムアウト・メッセージを印刷します。

    -stopclassを使用してサーバーを正常停止する場合、30秒というタイムアウト値は、サーバーがすべての処理を正常に終了するには短すぎる可能性があります。

    タイムアウト期間を構成するには、ServicesPipeTimeoutというREG_DWORDレジストリ値を、次のレジストリ・キーの下に作成します。

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control

    キー値はミリ秒で指定する必要があります。

    この値は、Windowsオペレーティング・システムの起動時にレジストリから読み取られ、インストールされているすべてのサービスに影響します。

  6. 変更後のWebLogic Serverマスター・スクリプトを保存します。

サーバー・インスタンスを停止するJavaクラス

以下のJavaクラスでは、JMX (Java Management Extensions)を使用してサーバー・インスタンスを停止します。各サーバーの管理属性と操作は、JMX管理対象Bean (MBean)を使用して公開されます。このようなMBeanの1つであるServerRuntimeは、サーバーを正常に停止するためのshutdown()メソッドを公開します。

例3-2に示すクラスでは、管理MBeanHomeインタフェースを使用しています。このインタフェースを使用すると、ドメイン内のすべてのサーバー・インスタンスのServerRuntime MBean操作を取得したり呼び出したりできます。

『Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発』およびJavadocを参照してください。

例3-2 サーバー・インスタンスを停止するJavaクラス

package com.myClasses;

import java.net.*;
import java.io.*;
import java.util.Hashtable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;

public class ServerStopper {
  public static void stop() {
    try {
      String servername = "AdminServer";
      String hostname = "localhost";
      int port = 7001;
      String username = "weblogic";
      String password = "password";
      //Select t3 or iiop as required
      //String protocol = "t3";
      String protocol = "iiop";
      String jndiroot = "/jndi/";
      String mserver = "weblogic.management.mbeanservers.domainruntime";
      
      // To avoid AssertionError
      URL[] urls = { new File("/").toURL() };
      Thread.currentThread().setContextClassLoader(new
         URLClassLoader(urls));

      JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port, jndiroot + mserver);
      Hashtable h = new Hashtable();
      h.put(Context.SECURITY_PRINCIPAL, username);
      h.put(Context.SECURITY_CREDENTIALS, password);
      h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote");
      JMXConnector connector = JMXConnectorFactory.connect(serviceURL, h);
      MBeanServerConnection connection = connector.getMBeanServerConnection();
      ObjectName service = new ObjectName("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
      ObjectName[] serverRuntimes = (ObjectName[]) connection.getAttribute(service, "ServerRuntimes");

    for (ObjectName serverRuntime : serverRuntimes) {
      String name = (String) connection.getAttribute(serverRuntime, "Name");

      if (name.equals(servername)) {
        String state = (String) connection.getAttribute(serverRuntime, "State");

        if (state.equals("RUNNING") || state.equals("ADMIN")) {
           connection.invoke(serverRuntime, "shutdown", new Object[0], new String[0]);
           System.out.println("Stopped the server: " + servername);
        }
        else
          System.out.println("The server is not in RUNNING or ADMIN state.  The current state is: " + state);
        return;
      }
    }
    System.out.println("The server, " + servername + " does not exist");
    connector.close();
  }
  catch (Exception ex) {
    Logger.getLogger(ServerStopper.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
}

標準出力および標準エラーのファイルへのリダイレクト

WebLogic ServerインスタンスをWindowsサービスとしてインストールする場合のデフォルトでは、サーバーやそのJVMから標準出力と標準エラーに出力されたメッセージは表示されません。

これらのメッセージを表示するには、標準出力および標準エラーからファイルにリダイレクトする必要があります。

  1. WL_HOME\server\bin\installSvc.cmdマスター・スクリプトのバックアップ・コピーを作成します。
  2. テキスト・エディタで、WL_HOME\server\bin\installSvc.cmdマスター・スクリプトをオープンします。
  3. installSvc.cmdスクリプトの最後のコマンドで、wlsvcユーティリティが呼び出されるようにします。wlsvcコマンドの末尾に、次のコマンド・オプションを追加します。
    -log:"pathname"
    

    pathnameは、サーバーの標準出力と標準エラーへのメッセージを格納するファイルの完全修飾パスおよびファイル名です。

    変更後のwlsvcコマンドは次のようになります。

    "%WL_HOME%\server\bin\wlsvc" -install 
    -svcname:"%DOMAIN_NAME%_%SERVER_NAME%" 
    -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" 
    -extrapath:"%WL_HOME%\server\bin" -password:"%WLS_PW%" 
    -cmdline:%CMDLINE%
    -log:"d:\Oracle\Middleware\user_projects\domains\myWLSdomain\myWLSserver-stdout.txt" 
    
    
  4. デフォルトでは、Windowsサービスが24時間間隔でpathname-yyyy_mm_dd-hh_mm_ssという名前のファイルにメッセージをアーカイブします。新しいメッセージは、前のステップで指定したファイルに収集されます。

    デフォルト動作の変更の詳細は、「デフォルトのローテーション条件の変更」を参照してください。

サービスをインストールしてWindowsホストを再起動したら、以下のいずれかの方法で、標準出力または標準エラーに書き込まれたメッセージを表示できます。

  • 指定したファイルのコピーを作成し、そのコピーを表示します。コピーを作成するのは、Windowsファイル・システムでは開かれているファイルに対して書込みを行うことができないためです。

  • メッセージがファイルに書き込まれるのと同時に表示します。その場合は、コマンド・プロンプトを開き、tailコマンドをサポートするDOSユーティリティを使用してtail -f stdout-filenameと入力します。

デフォルトのローテーション条件の変更

デフォルトでは、Windowsサービスが24時間間隔でpathname-yyyy_mm_dd-hh_mm_ssという名前のファイルにメッセージをアーカイブします。新しいメッセージは、サービスの設定時に指定したファイルに収集されます。

このアーカイブの時間間隔を変更したり、ローテーションの発生を時間間隔ではなくメッセージ・ファイルのサイズに基づいて設定したりできます。

Windowsサービスがメッセージ・ファイルをローテーションする際のデフォルト条件を変更するには:

  1. Windowsサービスが実行されている場合はそれを停止します。
  2. -log: pathname引数で指定したファイルを編集します。ファイルが存在しない場合は作成します。

    たとえば、前の項のステップ3のサンプル・コマンドを発行した場合、d:\Oracle\Middleware\user_projects\domains\myWLSdomain\myWLSserver-stdout.txtという名前のファイルを作成します。

  3. 以下のいずれか1つを実行します。
    • Windowsサービスで、ファイル・サイズには関係なく、特定の時間間隔でメッセージ・ファイルをローテーションする場合は、ファイルの先頭に以下の文を追加します。各文は別々の行に記述します(最後の行を記述した後、必ず「Enter」または「Return」を押してください)。

      # ROTATION_TYPE = TIME
      # TIME_START_DATE = date-in-required-format 
      # TIME_INTERVAL_MINS = number-of-minutes
      

      TIME_START_DATEは、初回のローテーションを行う日時を示します。指定した日時をすでに過ぎている場合は、TIME_INTERVAL_MINSに指定した時間が経過すると同時に初回のローテーションが発生します。開始時間の指定には、Month Day Year Hour:Minutes:Secondsというフォーマットを使用する必要があります。

      Monthには、グレゴリオ暦の月を示す英語の最初の3文字を指定します。

      Dayには、グレゴリオ月の日を2桁で指定します。

      Yearには、グレゴリオ暦の年を4桁で指定します。

      Hour:Minutes:Secondsには、24時間表記で時間を指定します。

      TIME_INTERVAL_MINSは、ファイルをローテーションする頻度を示します。

      オプションでMAX_FILE_COUNT属性を追加すると、WebLogic Serverからサービスとして生成される出力ファイルにローテーションの制限を指定できます。デフォルトはMAX_FILE_COUNT=-1で、ファイル数に制限はありません。MAX_FILE_COUNT0より大きい値を定義すると、ローテーションするファイルの数に制限が設定されます。

      たとえば:

      # ROTATION_TYPE = TIME
      # TIME_START_DATE = Jul 17 2003 05:25:30
      # TIME_INTERVAL_MINS = 1440
      
      # MAX_FILE_COUNT = 999
      

      指定した時間間隔が経過すると、ファイルがpathname-yyyy_mm_dd-hh_mm_ssという名前で保存されます。次に、pathnameという名前の新しいファイルが作成されます。この新しいファイルには、当初指定したすべてのヘッダーが含まれており、標準出力および標準エラーへの新しいメッセージはこのファイルに収集されます。

      # ROTATION_TYPE = TIMEを指定しても、それ以外の行を記述していない場合は、メッセージ・ファイルが24時間間隔でローテーションされます。

    • メッセージ・ファイルのサイズが指定値を超えたときにローテーションする場合は、ファイルの先頭に以下の文を追加します。各文は別々の行に記述します(最後の行を記述した後、必ず「Enter」または「Return」を押してください)。

      # ROTATION_TYPE = SIZE
      # SIZE_KB = file-size-in-kilobytes  
      # SIZE_TRIGGER_INTERVAL_MINS = polling-interval
      

      SIZE_KBは、メッセージ・ファイルをローテーションをトリガーする最小ファイル・サイズ(KB)を示します。

      SIZE_TRIGGER_INTERVAL_MINSは、ファイル・サイズをチェックする時間間隔(分)を示します。このヘッダーを含めない場合は、5分間隔でファイル・サイズがチェックされます。

      たとえば:

      # ROTATION_TYPE = SIZE
      # SIZE_KB = 1024
      # SIZE_TRIGGER_INTERVAL_MINS = 3 
      
      # MAX_FILE_COUNT = 999
      

      チェックしたファイルのサイズが指定サイズを超えていると、そのファイルがpathname-yyyy_mm_dd-hh_mm_ssという名前で保存されます。次に、pathnameという名前の新しいファイルが作成されます。この新しいファイルには、当初指定したすべてのヘッダーが含まれており、標準出力および標準エラーへの新しいメッセージはこのファイルに収集されます。

      # ROTATION_TYPE = SIZEを指定しても、それ以外の行を記述していない場合は、Windowsサービスは5分間隔でメッセージ・ファイルのサイズをチェックします。ファイル・サイズが1 MBを超えると、そのファイルはローテーションされます。

WebLogic Serverインスタンスからのスレッド・ダンプは、以下のいずれかの方法で標準出力に出力できます。

  • WLST threadDumpコマンドを使用します。

  • コマンド・プロンプトを開き、次のコマンドを入力します。

    WL_HOME\bin\wlsvc -dump -svcname:service-name

    WL_HOMEはWebLogic Serverのインストール・ディレクトリ、service-nameはサーバー・インスタンスを実行しているWindowsサービスです。

たとえば:

D:\Oracle\Middleware\wlserver_12.1\server\bin\wlsvc -dump -svcname:mydomain_myserver 

クラスパスへのクラスの追加

クラスパスとは、JVMから呼び出すことのできるJavaクラスの場所を宣言するものです。WebLogic Serverマスター・スクリプトを使用してサーバー・インスタンスをWindowsサービスとしてインストールする場合、マスター・スクリプトにはサーバー・インスタンスを実行するのに必要なすべてのクラスを指定します。独自のJavaクラスを追加してWebLogic Serverを拡張したい場合は、それらをクラスパスに追加する必要があります。

クラスをクラスパスに追加するには:

  1. WL_HOME\server\bin\installSvc.cmdマスター・スクリプトのバックアップ・コピーを作成します。

  2. テキスト・エディタで、WL_HOME\server\bin\installSvc.cmdマスター・スクリプトをオープンします。

  3. クラスをset CLASSPATH文に追加します。

    たとえば、クラスをc:\myJarというファイルにアーカイブした場合、変更後の文は次のようになります。

    set
    CLASSPATH=%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp.
    jar;%WL_HOME%\server\lib\weblogic.jar;c:\myJar;%CLASSPATH%
    

    ノート:

    Win32システムでは、コマンド行の長さが2047文字に制限されています。Windowsサービスを起動するためのクラスパス設定が非常に長くなると、2047文字の制限を超える可能性があります。

    この制限を回避するには:

    1. set CLASSPATHコマンドの値を、別のテキスト・ファイルに記述します。

    2. WL_HOME\server\bin\installSvc.cmdマスター・スクリプトを開き、set CMDLINEコマンドを探します。

    3. set CMDLINEコマンド内で、-classpath \"%CLASSPATH%\"オプションを次のオプションで置き換えます。

      -classpath @pathname\filename
      

      pathname\filenameは、クラスパスの値が格納されているファイルのフルパスおよび名前です。

      たとえば:

      set CMDLINE="%JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% 
      -classpath @c:\myClasspath.txt -Dweblogic.Name=%SERVER_NAME%
      -Dbea.home=\"D:\bea_70sp2\" -Dweblogic.management.username=%WLS_USER%
      -Dweblogic.management.server=\"%ADMIN_URL%\"
      -Dweblogic.ProductionModeEnabled=%STARTMODE%
      -Djava.security.policy=\"%WL_HOME%\server\lib\weblogic.policy\"
      weblogic.Server"
      
  4. 変更後のWebLogic Serverマスター・スクリプトを保存します。

サーバー固有のスクリプトの実行

ノート:

サーバー固有のスクリプトを実行するには、Windowsレジストリを変更する権限のあるユーザー・アカウントでWindowsコンピュータにログインする必要があります。

本番環境にWindowsサービスをインストールする場合は、管理者レベルの権限を持つオペレーティング・システム・ユーザー・アカウントでサービスを実行するのは避けるようにしてください。「サービスの実行に使用するユーザー・アカウントの検証」を参照してください。

サーバー固有のスクリプトを実行するには:

  1. コマンド・プロンプトを開き、管理サーバーのルート・ディレクトリ(サーバー固有のスクリプトが格納されているディレクトリ)に移動します。
  2. サーバー固有のスクリプトの名前を入力します。

    指定したスクリプトがbatchファイルとして実行されます。

    スクリプトの実行が正常に完了すると、DOMAIN_NAME_SERVER_NAMEという名前のWindowsサービスが作成され、次のような行が標準出力に出力されます。

    mydomain_myserver installed.

    デフォルトの標準出力は、サーバー固有のbatchファイルを実行しているコマンド・プロンプトです。

  3. WL_HOME\server\bin\installSvc.cmdマスター・スクリプトを変更した場合は、その変更を元に戻すことも検討してください。それにより、他のサーバー・インスタンスにも同じスクリプトを使用できるようになります。

設定の検証

wlsvcx64 -debugコマンドを実行して、Windowsサービスが適切に構成されていることを確認します。

WebLogic ServerをWindowsサービスとして正常に設定できたかどうかを検証するには、次の手順に従います。

  1. コマンド・ウィンドウを開き、次のコマンドを入力します。
    set PATH=WL_HOME\server\bin;%PATH% 
    
  2. 検証するドメイン・ディレクトリのすぐ上のディレクトリに移動します。たとえば、ORACLE_HOME\user_projects\domains\mydomainの設定を検証する場合は、ORACLE_HOME\user_projects\domainsに移動します。
  3. 次のように入力します。
    wlsvcx64 -debug "yourServiceName" 
    

    たとえば、wlsvcx64 -debug "mydomain_myserver"のようになります。

    設定が正常に完了している場合は、wlsvcx64 -debugコマンドを実行するとサーバーが起動します。スクリプトから次のようなエラーが返された場合は、指定したサービス名が正しいかどうかを確認してください。

    Unable to open Registry Key ....... System\CurrentControlSet\Services\wlsvc example_examplesServer\Parameters

サービスの実行に使用するユーザー・アカウントの検証

本番環境でWebLogic Server Windowsサービスを実行する場合は、アクセス権限が制限された特別なオペレーティング・システム・ユーザー・アカウントで実行する必要があります。たとえば、そのOSユーザーは、Oracleファイルおよびあなたのドメイン・ファイルのみに対するアクセス権限を持つ必要があります。これは、これらのファイルへのアクセス権限を持つ唯一のユーザー・アカウントであることが必要です。

WebLogic Serverインスタンスが特別なOSユーザー・アカウントで実行されていることを確認するには:

  1. Microsoft管理コンソールの「サービス」を開きます。

    たとえば、Windows XPデスクトップの場合は次のようにします。

    1. 「スタート」メニューをクリックします。

    2. 「スタート」メニューで、「すべてのプログラム」>「管理ツール」>「サービス」と選択します。

  2. 「サービス」画面で、「WebLogic Server Windows」サービスを右クリックし、「プロパティ」をクリックします。

  3. 「プロパティ」ウィンドウで、「ログオン」タブを選択します。

  4. 「ログオン」でこのアカウントを選択します。特別なOSユーザー・アカウントのユーザー名とパスワードを入力します。

  5. 「OK」をクリックします。

    ノート:

    ネットワーク・ドライブにアクセスする場合は、そのネットワーク・ドライブを共有するユーザー名でWindowsサービスを実行する必要があります。

「サービス」ウィンドウの使用によるサーバー・インスタンスの停止または再起動

Microsoft 管理コンソールの「サービス」ウィンドウを使用して、サーバー・インスタンスを停止し、再起動します。

デフォルトでは、Microsoft管理コンソールを使用してサーバー・インスタンスを停止すると、サーバーのJava仮想マシン(JVM)を強制停止します。JVMを強制停止すると、サーバーはただちにすべての処理を終了します。セッション・データはすべて失われます。サーバーがconfig.xmlファイルへの書込みを行っている間に管理サーバーのJVMを強制停止すると、config.xmlファイルが破損するおそれがあります。「正常停止の有効化」を参照してください。

WindowsサービスとしてインストールされているWebLogic Serverインスタンスを停止または再起動するには:

  1. 「スタート」 > 「すべてのプログラム」 > 「管理ツール」 > 「サービス」と選択します。
  2. 「サービス」画面で、作成したサービスを検索します。デフォルトのサービス名はwlsvcから始まります。
  3. サービス名を右クリックし、ショートカット・メニューから「コマンド」を選択します。

Windowsサービスとして設定されているサーバーの削除

wlsvcユーティリティを使用してWindowsレジストリから関連キーを削除するためのスクリプトを使用してWindowsサービスを削除できます。ドメインの構成ファイルに保存されているサーバー・インスタンスの構成には影響しません。Windowsサービスを削除した後、管理対象サーバーの場合は起動スクリプトを使用して、またはノード・マネージャを使用して、WebLogic Serverインスタンスを再起動できます。

スクリプトではまず、サーバー固有の情報(サーバー・インスタンスの名前など)を特定する変数の値を設定します。次に、マスター・アンインストール・スクリプトWL_HOME\server\bin\uninstallSvc.cmdを呼び出します(WL_HOMEはWebLogic Serverのインストール・ディレクトリ)。このマスター・スクリプトからは、Windowsレジストリからキーを削除するwlsvcユーティリティが呼び出されます。

サーバー固有のアンインストーラ・スクリプトのサンプルについては、例3-3を参照してください。

WebLogic Serverインスタンスを実行するWindowsサービスを削除するためのスクリプトを作成するには:

  1. ドメインの管理サーバーのルート・ディレクトリ(config.xmlファイルが格納されているディレクトリ)にテキスト・ファイルを作成します。
  2. このテキスト・ファイルに、以下に示す必須batchコマンドを追加します。各コマンドは別々の行に記述してください。
    • SETLOCAL

      これは、バッチ・ファイル内の環境変数のローカライゼーションを開始するbatchコマンドです。

    • set DOMAIN_NAME=domain-name

      domain-nameは、WebLogic Serverドメインの名前です。

    • set SERVER_NAME=server-name

      server-nameは、Windowsサービスとして削除する既存のサーバー・インスタンスの名前です。

    • set MW_HOME=ORACLE_HOME

      ORACLE_HOMEは、Oracle WebLogic Serverをインストールした際にOracleホームとして指定したディレクトリへの絶対パスです。

    • call "WL_HOME\server\bin\uninstallSvc.cmd"

      WL_HOMEは、WebLogic Serverをインストールしたディレクトリへの絶対パスです。これは、WebLogic Serverマスター・アンインストール・スクリプトを呼び出すコマンドです。

    • ENDLOCAL

      これは、バッチ・ファイル内の環境変数のローカライゼーションを終了するbatchコマンドです。

  3. このテキスト・ファイルを、拡張子.cmdで保存します。デフォルトでは、Windowsコマンド・プロンプトによって拡張子.cmdbatchファイルが関連付けられます。
  4. サーバー固有のスクリプトの名前を入力します。

    指定したスクリプトがbatchファイルとして実行されます。

削除スクリプトの実行が正常に完了すると、標準出力に次のような行が出力されます。

mydomain_myserver removed

デフォルトの標準出力は、batchファイルを実行しているコマンド・プロンプトです。

例3-3 Windowsサービスを削除するスクリプト

echo off
SETLOCAL
set DOMAIN_NAME=myWLSdomain 
set SERVER_NAME=myWLSserver
set MW_HOME=D:\Oracle\Middleware\Oracle_Home
call "D:\Oracle\Middleware\Oracle_Home\wlserver\server\bin\uninstallSvc.cmd"
ENDLOCAL

Windowsサービスとして設定されているサーバーの起動資格証明の変更

WebLogic Serverインスタンスを異なるユーザー資格証明のもとで動作させるには、様々な起動資格証明をサポートするようにWindowsサービス構成を変更できます。

以下のいずれか1つを実行します。

  • ユーザー名とパスワードを起動IDファイルから取得するようにWindowsサービスを設定した場合は、新しいユーザー名とパスワードを格納した起動IDファイルで既存のファイルを上書きできます。WebLogic Serverのデフォルト・セキュリティ・レルムに、既存ユーザーの名前を指定する必要があります。「起動IDファイル」を参照してください。

  • ユーザー名とパスワードをWindowsレジストリから取得するようにWindowsサービスを設定した場合は、そのWindowsサービスを削除して、新しいWindowsサービスを新しいユーザー名とパスワードで作成する必要があります。

    1. WebLogic Serverインスタンスを実行するWindowsサービスをアンインストールします。「Windowsサービスとして設定されているサーバーの削除」を参照してください。

    2. サービスのインストールに使用したスクリプトをテキスト・エディタで開き、新しいユーザー名とパスワードを、set WLS_USERおよびset WLS_PWコマンドの値として入力します。これらの値は、WebLogicサーバーによって暗号化されてWindowsレジストリに格納されます。

    3. スクリプトへの変更内容を保存します。

    4. サーバー固有のスクリプトの名前を入力します。

      指定したスクリプトがbatchファイルとして実行されます。

      スクリプトが正常に実行されると、次の名前のWindowsサービスが作成されます:

      DOMAIN_NAME_SERVER_NAME。そして、標準出力に次のような行が出力されます:

      mydomain_myserver installed
      

      デフォルトの標準出力は、サーバー固有のbatchファイルを実行しているコマンド・プロンプトです。

    5. (オプション)スクリプト・ファイルからユーザー名とパスワードを削除します。