マシンの再起動が必要になった場合など、ドメインまたはノードエージェントが予想外に停止される場合にそなえて、ドメインまたはノードエージェントが自動的に再起動されるようにシステムを設定することが可能です。
この付録では、次の項目について説明します。
Solaris 10 ユーザーは、asadmin create-service コマンドを使用して、ノードエージェントまたはドメイン管理サーバー (DAS) を再起動するサービスを作成できます。作成したサービスでは、Solaris サービス管理機能 (SMF) が使用されます。
サービスが再起動するプロセスは、そのサービスが DAS またはノードエージェントのどちらを再起動するかによって異なります。
DAS を再起動するサービスのプロセスは、asadmin start-domain です。
ノードエージェントを再起動するサービスのプロセスは、asadmin start-node-agent です。
サービスはプロセスに、そのプロセスを実行するユーザーの特権を付与します。asadmin create-service コマンドを使用して SMF サービスを作成する場合、デフォルトのユーザーはスーパーユーザーです。別のユーザーがプロセスを実行する必要がある場合は、method_credential にそのユーザーを指定します。
プロセスを Solaris OS の特権ポートにバインドする場合、そのプロセスには net_privaddr 特権が必要です。Solaris OS の特権ポートは、1024 より小さいポート番号です。
ユーザーが net_privaddr 特権を持っているかどうかを確認するには、そのユーザーとしてログインし、ppriv -l | grep net_privaddr コマンドを入力します。
asadmin create-service コマンドを実行するには、solaris.smf.* 認証が必要です。この認証の設定方法については、useradd および usermod のマニュアルページを参照してください。さらに次のディレクトリツリーでの書き込み権も必要です。 /var/svc/manifest/application/SUNWappserver。通常、スーパーユーザーはこれらの権限をどちらも持っています。また、svccfg、svcs、auths などの Solaris 10 管理コマンドが PATH で使用できなければなりません。このコマンドの詳細は、create-service(1) のマニュアルページを参照してください。
構文は次のとおりです。
asadmin create-service [--name service-name] [--type das|node-agent] --passwordfile password-file [--serviceproperties serviceproperties] domain-or-node-agent-configuration-directory |
たとえば、domain1 に対して domain1 という名前のサービスを作成するには、次の手順に従います。
次のコマンドを実行します。
asadmin create-service --type das --passwordfile password.txt /appserver/domains/domain1
これで、ドメイン domain1 を自動的に再起動するサービスが作成されます。このコマンドにより、バックグラウンドで、テンプレートからマニフェストファイルが作成されて検証され、そのファイルがサービスとしてインポートされます。
特定の Enterprise Server ドメインにデフォルトのユーザー特権を与えないようにする場合は、サービスのマニフェストを変更し、サービスを再インポートします。ユーザーの特権を調べるには、そのユーザーとしてログインし、ppriv -l コマンドを入力します。
サービスが作成されたら、次の svacdm enable コマンドを使用してサービスを有効にします。
svacdm enable /appserver/domains/domain1
有効にしたあと、ドメインが停止した場合は、SMF によって再起動されます。
サービスを管理するときに、次の Solaris コマンドが役に立ちます。
auths
smf_security
svcadm
svccfg
rbac
useradd
usermod
これらのコマンドの詳細については、各コマンドのマニュアルページを参照してください。
Solaris 9 または Linux プラットフォーム上でドメインを再起動するには、/etc/inittab ファイルにテキストを 1 行追加します。
/etc/rc.local またはこれに相当するファイルを使用している場合は、/etc/rc.local に asadmin コマンドを呼び出す行を追加します。
たとえば、opt/SUNWappserver ディレクトリにインストールされた Enterprise Server の domain1 を、password.txt という名前のパスワードファイルを使って再起動するには、次のテキストを追加します。
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain --user admin --passwordfile /opt/SUNWappserver/password.txt domain1 |
このテキストは 1 行で記述してください。先頭の 3 文字はこのプロセスに対する一意の指示子ですが、これは変更可能です。
ノードエージェントを再起動する場合の構文も、これと似ています。たとえば、opt/SUNWappserver ディレクトリにインストールされた Enterprise Server の agent1 を、password.txt という名前のパスワードファイルを使って再起動するには、次のテキストを追加します。
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-node-agent --user admin --passwordfile /opt/SUNWappserver/password.txt agent1 |
Microsoft Windows 上で自動的に再起動するには、Windows サービスを作成し、ユーザーがログアウトするときにサービスがシャットダウンされないようにします。
Sun GlassFish Enterprise Server に同梱されている実行可能ファイル appservService.exe と appserverAgentService.exe を、Microsoft が提供するサービス制御コマンド (sc.exe) と組み合わせて使用します。
sc.exe コマンドは Windows XP に含まれており、Windows インストールディレクトリの system32 サブディレクトリ (通常は C:\windows\system32 か C:\winnt\system32 のいずれか) に格納されています。現時点では、Windows 2000 の sc.exe は ftp://ftp.microsoft.com/reskit/win2000/sc.zip でダウンロードできます。sc.exe の使用方法については、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_scmslite.asp を参照してください。
appservService.exe と appservAgentService.exe の使用方法は次のとおりです。
C:\winnt\system32\sc.exe create service-name binPath= \"fully-qualified-path-to-appservService.exe \"fully-qualified-path-to-asadmin.bat start-command\" \"fully-qualified-path-to-asadmin.bat stop-command\"" start= auto DisplayName= "display-name"
binpath と等号 (=) の間にスペースは入れません。等号とパスの間にはスペースが必要です。
たとえば、パスワードファイル C:\Sun\AppServer\password.txt を使ってドメイン domain1 を開始および停止するサービス SunJavaSystemAppServer DOMAIN1 を作成するには、次のようにします。
C:\windows\system32\sc.exe create domain1 binPath= "C:\Sun\AppServer\lib\appservService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-domain --user admin --passwordfile C:\Sun\AppServer\password.txt domain1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-domain domain1\"" start= auto DisplayName= "SunJavaSystemAppServer DOMAIN1"
ノードエージェント agent1 を開始および停止するサービスを作成するには、次のようにします。
C:\windows\system32\sc.exe create agent1 binPath= "C:\Sun\AppServer\lib\appservAgentService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-node-agent --user admin --passwordfile C:\Sun\AppServer\password.txt agent1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-node-agent agent1\"" start= auto DisplayName= "SunJavaSystemAppServer AGENT1"
binPath= パラメータの一部として入力された開始コマンドと停止コマンドは、正しい構文で記述されている必要があります。確認するには、それらのコマンドをコマンドプロンプトから実行します。コマンドを実行してもドメインまたはノードエージェントが正常に開始または停止しない場合、そのサービスは正しく動作していません。
asadmin の start/stop コマンドとサービスの開始/停止を混在させないでください。両者を混在させると、サーバーの状態の同期が取れなくなります。たとえば、サーバーのコンポーネントが実行されていないのに「コンポーネントが開始された」と表示されたりします。こうした状況を避けるには、サービス使用時には常に、sc.exe コマンドを使ってコンポーネントを開始および停止するようにしてください。
sc.exe create コマンドでサービスが正しく作成されなかった場合は、そのサービスを削除し、もう一度実行してみてください。サービスを削除するには、sc.exe delete "service-name" コマンドを使用します。
デフォルトでは、Java VM は、オペレーティングシステムのシャットダウンまたはユーザーのログアウトが行われることを示すシグナルを Windows からキャッチし、Java VM 自身を完全にシャットダウンします。この動作により、ユーザーが Windows からログアウトすると Enterprise Server サービスがシャットダウンされます。ユーザーがログアウトするときにサービスがシャットダウンしないようにするには、-Xrs Java VM オプション を設定します。
-Xrs Java VM オプションを設定するには、as-install\domains\domain-name\config\domain.xml ファイル内の、Java VM オプションを定義するセクションに次の行を追加します。
<jvm-options>-Xrs</jvm-options>
Enterprise Server サービスが稼働している場合、変更を有効にするには、そのサービスを停止して再起動します。
Windows 2003 Server インストールでは、-Xrs オプションを domain.xml ファイル追加しても、サービスのシャットダウンを防止できないことがあります。この場合は、次のように、このオプションを as-install\lib\processLauncher.xml ファイルに追加します。
<process name="as-service-name"> ... <sysproperty key="-Xrs"/> ...
クラスタプロファイルまたはエンタープライズプロファイルを使用している場合は、Enterprise Server を自動的に再起動するときに、管理パスワードとマスターパスワードが必要です。開発者プロファイルを使用している場合は、これらのパスワードは必要ありません。
クラスタプロファイルおよびエンタープライズプロファイルで必要なパスワードとマスターパスワードは、次のいずれかの方法で処理します。
Microsoft Windows 上で、ユーザーにパスワードを尋ねるようにサービスを設定します。
サービスコントロールパネルで、作成したサービスをダブルクリックします。
「プロパティー」ウィンドウの「ログオン」タブをクリックします。
「デスクトップとの対話をサービスに許可」にチェックマークを付け、必要なパスワードに対するプロンプトがコンポーネント起動時に表示されるようにします。
ログインしてプロンプトを表示させ、入力時にエントリがエコーバックされないことを確認する必要があります。これがサービスオプションを使用する際のもっとも安全な方法ですが、この方法の場合、ユーザーが関与しないとサービスが利用可能になりません。
デスクトップとの対話オプションを設定しなかった場合、サービスは「開始保留」状態のままになり、ハングアップしたように見えます。この状態から抜け出すには、このサービスのプロセスを終了してください。
Windows または UNIX 上で、--savemasterpassword=true オプションを使ってドメインを作成し、管理パスワード格納用のパスワードファイルを作成します。コンポーネント起動時に、--passwordfile オプションを使ってパスワードが格納されたファイルを指定します。
次に例を示します。
ドメイン作成時にマスターパスワードを保存します。次の構文では、ユーザーは管理パスワードとマスターパスワードの入力を求められます。
asadmin create-domain --adminport 4848 --adminuser admin --savemasterpassword=true --instanceport 8080 domain1 |
Windows の場合は、サービスを作成します。その際、パスワードファイルを使って管理パスワードを提供します。
C:\windows\system32\sc.exe create domain1 binPath= "C:\Sun\AppServer\lib\appservService.exe \"C:\Sun\AppServer\bin\asadmin.bat start-domain --user admin --passwordfile C:\Sun\AppServer\password.txt domain1\" \"C:\Sun\AppServer\bin\asadmin.bat stop-domain domain1\"" start= auto DisplayName= "SunJavaSystemAppServer DOMAIN1"
パスワードファイル password.txt のパスは、C:\Sun\AppServer\password.txt です。このファイルには、パスワードが次の形式で格納されています。
AS_ADMIN_password=password
たとえば、パスワードが adminadmin の場合、次のようになります。
AS_ADMIN_password=adminadmin
UNIX の場合、inittab ファイルに追加する行の中で、--passwordfile オプションを使用します。
das:3:respawn:/opt/SUNWappserver/bin/asadmin start-domain --user admin --passwordfile /opt/SUNWappserver/password.txt domain1 |
パスワードファイル password.txt のパスは、/opt/SUNWappserver/password.txt です。このファイルには、パスワードが次の形式で格納されています。
AS_ADMIN_password=password
たとえば、パスワードが adminadmin の場合、次のようになります。
AS_ADMIN_password=adminadmin