WAS6.0(体験版)用 単なる起動スクリプト

環境

IBM WebSphere Application Server6.0 こと WAS6.0の体験版を使ってみました。
(ちなみにWindowsサービスとしてはインストールしていません)
これまではTomcatを扱うことが多かったのですが、WASはかなり重いですね・・・。
まぁ両者はカテゴリが違うので、この2者を比較すること自体が適切ではありませんが。。

それは置いておくとして、実際に使用した結果、私の環境(Pentimu4-3Ghz/Memory-1GB)でのサーバの起動時間は
・Tomcat5.0.28:数秒
・WAS6.0Trial+fix6.0.0.3:1分以上
でした。
何とか起動が早くならないかなぁ・・・といろいろ試してみましたがいまひとつ結果に結びつかず。
その最中に起動スクリプトを追ってみたものの、呼び出しの階層が深く、どこに手をつけていいかがよくわからず・・・とりあえず、一発で起動できるスクリプトを作ってみよう、ということで作ったのがコレです。

SET WAS_HOME=C:\WebSphere
SET APPSERVER_NAME=AppServer
SET CELL_NAME=HOSTNAMENode01Cell
SET NODE_NAME=HOSTNAMENode01
SET SERVER_NAME=server1

REM # ヒープメモリ設定
REM # -Xms 初期ヒープサイズ(全体)
REM # -Xmx 最大ヒープサイズ(全体)
SET HEAPMEM_XMS=50m
SET HEAPMEM_XMX=256m

REM ##### ドライブレター取得
FOR /F "usebackq tokens=*" %%I IN (`ECHO %WAS_HOME%`) DO SET TARGET_DRIVE=%%~I
FOR /F "usebackq tokens=*" %%I IN (`ECHO %TARGET_DRIVE%`) DO SET TARGET_DRIVE=%TARGET_DRIVE:~0,2%

REM ##### 作業ディレクトリへ移動
%TARGET_DRIVE%
CD "%WAS_HOME%\%APPSERVER_NAME%\profiles\default"

"%WAS_HOME%\AppServer\java\bin\javaw.exe" ^
"-Duser.install.root=%WAS_HOME%/%APPSERVER_NAME%/profiles/default" ^
"-Dserver.root=%WAS_HOME%/%APPSERVER_NAME%/profiles/default" ^
"-Dwas.install.root=%WAS_HOME%/%APPSERVER_NAME%" ^
"-Dcom.ibm.itp.location=%WAS_HOME%/%APPSERVER_NAME%/bin" ^
"-Dws.ext.dirs=%WAS_HOME%/%APPSERVER_NAME%/java/lib;%WAS_HOME%/%APPSERVER_NAME%/profiles/default/classes;%WAS_HOME%/%APPSERVER_NAME%/classes;%WAS_HOME%/%APPSERVER_NAME%/lib;%WAS_HOME%/%APPSERVER_NAME%/installedChannels;%WAS_HOME%/%APPSERVER_NAME%/lib/ext;%WAS_HOME%/%APPSERVER_NAME%/web/help;%WAS_HOME%/%APPSERVER_NAME%/deploytool/itp/plugins/com.ibm.etools.ejbdeploy/runtime" ^
"-Xbootclasspath/p:%WAS_HOME%/%APPSERVER_NAME%/java/jre/lib/ext/ibmorb.jar;%WAS_HOME%/%APPSERVER_NAME%/java/jre/lib/ext/ibmext.jar -Xms%HEAPMEM_XMS% -Xmx%HEAPMEM_XMX%" ^
"-Djava.util.logging.manager=com.ibm.ws.bootstrap.WsLogManager" ^
"-Djava.util.logging.configureByServer=true" ^
"-Dibm.websphere.preload.classes=true" ^
"-Djava.library.path=%WAS_HOME%/%APPSERVER_NAME%/java/bin;%WAS_HOME%/%APPSERVER_NAME%/bin;%WAS_HOME%/%APPSERVER_NAME%/java/bin;%WAS_HOME%/%APPSERVER_NAME%/java/jre/bin" ^
"-Dcom.ibm.CORBA.ConfigURL=file:%WAS_HOME%/%APPSERVER_NAME%/profiles/default/properties/sas.client.props" ^
"-Dcom.ibm.SOAP.ConfigURL=file:%WAS_HOME%/%APPSERVER_NAME%/profiles/default/properties/soap.client.props" ^
-Dwas.debug.mode=true -Djava.compiler=NONE -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777 ^
-Xquickstart ^
-Xverify:none ^
-classpath "%WAS_HOME%\AppServer\properties;%WAS_HOME%\AppServer\lib\bootstrap.jar;%WAS_HOME%\AppServer\lib\j2ee.jar;%WAS_HOME%\AppServer\lib\lmproxy.jar;%WAS_HOME%\AppServer\lib\urlprotocols.jar" ^
com.ibm.ws.bootstrap.WSLauncher ^
com.ibm.ws.runtime.WsServer ^
"%WAS_HOME%\%APPSERVER_NAME%\profiles\default\config" "%CELL_NAME%" "%NODE_NAME%" "%SERVER_NAME%"

ECHO 起動処理 終了

  • このスクリプトを使用するに当たって
    • 変数「WAS_HOME」「APPSERVER_NAME」「CELL_NAME」「HOSTNAMENode01」「SERVER_NAME」は、インストール環境に合わせてそれぞれ設定してください。
    • 環境変数の指定が必要な場合は、適時「-D」オプションを追加してください。
    • 一応の高速化ということで「-Xquickstart」「-Xverify:none」のオプションを指定(効果は不明)
    • 「-Dwas.debug.mode=true」の行の記述は、リモートデバッグを行う場合に必要。「address」には、リモート接続に使用するTCPポート番号を指定する。
  • このスクリプトについて
    • Eclipse3.1+WTP の環境で、WAS起動時のパラメータを引っこ抜いて参考にしました。
    • 全てのパラメータ指定が必要なわけではないですが、ひとつの形ということで参考までに。
    • パラメータ指定部分の各行の行末(改行前)に、忘れずに「^」を記述する。これはDOSバッチにおける継続記号。VBでいうところの「_(改行)」、UnixShellでいうところの「\(改行)」と同じ。

起動時間はあまり変わらないかもしれませんが、管理コンソールの動作やデプロイの処理は軽くなったような気がします。

JBoss4.0 のセットアップ on FedoraCore5


zipアーカイブを展開して配置するだけでもセットアップは完了するのですが、その方法は多くのサイトで説明されているので、ここではGUIインストーラを使用してのJBossセットアップを行ってみます。今回は、JBoss 4.0.3 SP1 を使用します。
調査中のところもあるので、間違いがあればツッコミお願いいたします

環境

備考

    • jboss.org のドキュメント「JBoss 4 Application Server Guide Code, release 4」を参考にしています。
    • (このドキュメントを参照するには、ユーザ登録(無償)が必要です)

セットアップ手順

  1. JDKのインストール
    • Java1.4 または 1.5 がインストールされている必要があります。コマンドラインから「java -version」を入力して確認します。
    • EJB3を利用するには Java1.5が必要です。また、AOPなどでアノテーションを利用するにも必要ですから、問題が無ければ、Java1.5をセットアップしておきましょう。
    • ここでは、Sunの J2SE5.0のJDK(1.5.0-06)を「/usr/local/jdk1.5.0_06」へセットアップしています【参考
    • JBossのサイトから最新のアーカイブをダウンロードします。
    • (今回は「4.0.3 SP1」のインストーラjboss-4.0.3SP1-installer.jar」をダウンロードします)
  2. JBossインストーラの起動
    • このインストーラはWindowApplicationなので、ウィンドウマネージャから起動します。
    • GNOME端末などを起動し、以下のコマンドを実行します
    • すると、以下の画面が表示されます。
      • デフォルトで「jpn」が選択されていると思いますので、そのまま「OK」を押します。
      • 「次へ」を押します。
      • ※ここで文字が化けている場合は、Javaでの日本語表示が上手く出来ていない可能性があります。ここのページを参考にして、Java上で日本語フォントを使用可能にします。なお、私の環境には「kochi〜」というフォントファイルが無かったので「sazanami-gothic.ttf」と「sazanami-mincho.ttf」を使用しました。
      • 「次へ」を押します。
      • 「ライセンス利用許諾に同意します」を選択し「次へ」を押します。
      • インストール先に特に問題が無ければ、そのまま「次へ」を押します。
      • 確認メッセージが表示されるので、問題が無いことを確認し「了解」を押します。
      • どのインストールタイプを選ぶかは任意ですが、ここでは「all」を選択し「次へ」を押します。
      • インストールされるコンポーネントの詳細が表示されます。とりあえず全部入れてみるので、そのまま「次へ」を押します。
      • コンフィグレーション名を設定します。ここではデフォルトの設定(default)を使用しますので、そのまま「次へ」を押します。
      • 「Isolation and Call by Value Semantics」の設定を行うか選択します。「複数の配備したアプリケーション間でクラスを共有するかしないかを選択するもの」らしいですが、スタンドアロンで使用する上では無くても特に問題ないようなので、ここではデフォルト(チェック無し)のまま「次へ」を押します。
      • JMXの設定と管理ユーザのアカウント/パスワードを設定します。JMXはよくわからないのでデフォルトのまま(チェック無し)、管理ユーザの設定は任意に設定し(私の場合はローカル環境なのでデフォルト[admin/admin]を使用)「次へ」を押します。
      • ここまでの選択内容がサマリ表示されます。問題が無ければ「次へ」を押します。
      • インストールが開始されます
      • インストールが完了しましたので「次へ」を押します。
      • インストールが正常に終了しましたので「FinishPanel.done」を押しインストーラを終了させます。
  3. JBossの実行用アカウント作成
  4. JBossの起動確認
    • 以下のコマンドで、JBossを起動します
      • # su - jboss
      • $ cd /usr/local/jboss-4.0.3SP1/bin
      • $ sh run.sh
        • コマンドの最後に「&」をつけてデーモン起動してもよい。
    • 「Started in 1m:30s:149ms」といったようなメッセージが表示されれば起動完了です。
    • WEBブラウザで「http://localhost:8080/」にアクセスし、以下のようなページが表示されることを確認します。
      • JBossのデフォルトのポートは「8080」です。
      • JBossをセットアップしたホスト以外からアクセスする場合は、localhostではなくホスト名またはIPアドレスを入力してください。
      • ファイアウォールを有効にしている場合は、適切なルールを設定するか、停止して確認して下さい。
  5. JBossの終了
    • 以下のコマンドで、JBossを停止します
      • $ sh shutdown.sh --shutdown

J2SE 5.0 JDK のセットアップ on FedoraCore5


脱RPM中。rpmを使わずにJDKをセットアップしてみましょう。

環境

  • Fedora Core 5(x86-32bit)
  • rpmは使わずに、バイナリインストールします

注意

  • gcc-javaGCJGCCJavaコンパイラ
    • FedoraCore5の標準セットアップだと、既にGCJがセットアップされています。
    • GCJはSunのJavaコンパイラと異なり、Javaプログラムを実行前にネイティブコードに変換するコンパイラです。
    • つまり、バイトコードではなくネイティブコードを生成します。
    • GCJコンパイルしたバイナリの実行にはJVMは不要ですが、代わりに「libgcj」というライブラリが必要になります。
    • とりあえず、世間一般のJava物を扱うには、別途 SunのJDKを用意したほうが無難でしょう。

セットアップ手順

  1. JDK 1.5 のダウンロード
    • インストール先は任意ですが、今回は「/usr/local」以下に配置します。「/opt」やその他でも構いません(環境変数(PATH や JAVA_HOME)の設定が変わるだけです)。
    • Sunのサイトの「JDKのダウンロード」をクリックします。
    • 「Required: You must accept the license agreement to download the product.」の項目で「Accept」をクリックします。
    • Linux Platform - J2SE(TM) Development Kit 5.0 Update 6」の「Linux self-extracting file」からアーカイブをダウンロードします。
    • 2006/04/26 時点のアーカイブは「jdk-1_5_0_06-linux-i586.bin」です。
    • ダウンロードしたファイルを「/usr/local」に配置します。
    • wget コマンドでアーカイブを取得する場合は、以下のコマンドを実行します。
      • $ su -
      • # cd /usr/local
      • # wget -O 【保存ファイル名】 【上記ダウンロードサイトアーカイブのURL】
        • URLによっては、保存ファイル名が長くなりすぎてwgetがエラーになるため、「-O」オプションで適当な保存ファイル名を指定するとよいでしょう。
  2. インストール
    • # /bin/sh ./【保存したファイル名】
    • 上記コマンドを実行すると
    • のように表示されるので、最後までスクロールし
      • Do you agree to the above license terms? [yes or no]
    • と表示されたら「y」を入力し、Enterを押すとアーカイブの展開が始まります。
    • 「Done.」と表示されれば展開終了です。
    • 今回は「/usr/local/jdk1.5.0_06」に配置されたことになります。
    • ダウンロードしたアーカイブは、不要なら消して下さい。
  3. 環境変数の設定
    • ~/.bash_profile などに以下を追加します。
      • export JAVA_HOME=/usr/local/jdk1.5.0_06
      • export PATH=$JAVA_HOME/bin:$PATH
  4. 確認
    • 以下のコマンドで、正しくインストールされていることを確認します
      • # source ~/.bash_profile
      • # java -version
    • 以下のようなメッセージが表示されれば、インストール完了です。
      • Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
      • Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)

参考リンク

Oracle 10g Database R2 セットアップ時のエラー

環境

問題

  • インストール処理の最後で実行される構成処理(Net Configuration Assistant)で固まる。
    • そのまま待っているとエラーで停止するが、処理を取り消して終了すると、正常にセットアップされない
    • ↑tnsping などを実行すると、メッセージファイルが見つからない旨のメッセージが出るので。
    • (9iのときは、インストールとコンフィギュレーションは別々だった気がしたのだが・・・10gはコンフィギュレーションもパスしないとだめらしい)
    • なお、固まっている最中のCPU使用率はほぼ100%を維持。

原因

  • 恐らく、既にセットアップされていたJ2SE_SDK(1.4.2_11)が悪さをしていると思われる。
  • コマンドプロンプトから「java -version」を実行すると「1.4.2_11」と表示される状態でセットアップした。
  • ちなみに、10gR2 付属のJDKは「1.4.2_08-b03」

対処

  • インストール前に、環境変数「Path」の先頭に、以下のパスを追加する
  • その他、おまじない的な点
    • セットアップファイルの階層を浅くした
      • CDROMからのセットアップなら関係ないと思われるが、今回は米Oracleのサイトから落としたアーカイブを利用したため。
      • また、パスに空白を含まないようにした(デスクトップなどを避ける)。
    • setup.exe ではなく、autorun.exe を実行した
      • autorun.inf が autorun.exe を参照していたため、念のため。

上記のような対処を行ったところ、何とかセットアップを終えることができた。
ただ、どの対処が有効だったのかは定かではない。個人的には、JDKの競合が一番怪しいと思っている。

MySQL(バイナリ)セットアップ(on FedoraCore5)

FedoraCore5 への MySQL5.0.20 インストール
rpmでのインストールは色々と情報があるようなので、あえてバイナリでのセットアップをしてみた。

環境

セットアップ手順【参考

  1. MySQLのダウンロード
  2. MySQLのインストール
    • 以下、展開したファイルの「INSTALL-BINARY」を参考にしてみた。
    • 以下の作業は root で行う。
    • インストール先は「/usr/local/mysql
      • これは $MYSQL_HOME/binmysqlaccess スクリプト内の以下の記述に対応するようだ。

$MYSQL = '/usr/local/mysql/bin/mysql'; # path to mysql executable

起動・停止

  1. MySQLの起動
    1. 通常の方法
      • # bin/mysqld_safe --user=mysql &
      • 「&」をつけてデーモン起動する。
    2. スクリプトを直接実行する場合
    3. service コマンド経由で実行する場合(/etc/init.d 以下へ起動スクリプトの配置が完了している必要あり)
  2. MySQL自動起動の設定
    • # cp -p /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    • # /sbin/chkconfig --level 2345 mysql on
    • # /sbin/chkconfig --level 016 mysql off
  3. MySQL自動起動を無効にする
    • # /sbin/chkconfig --level 2345 mysql off
  4. 管理者パスワードの設定
    • # /usr/local/mysql/bin/mysqladmin -u root password '管理者のパスワード'
  5. MySQLの停止
    1. 通常の方法
      • # /usr/local/mysql/bin/mysqladmin shutdown
      • 管理者パスワードを設定している場合は↓のようにオプションをつける。
      • # /usr/local/mysql/bin/mysqladmin shutdown -u root -p

接続

  1. MySQLへの接続
    • >mysql -u root -p(パスワード)
      • この場合は root アカウント(MySQL内のアカウント)でログインを試みる。
      • パスワードは省略すると、その後入力を求められる。
      • -p に続けて指定する場合はスペースを入れずに記述する。
      • ログインに成功すると、プロンプトが「mysql>」に変わる。
  2. DBユーザの作成
    • ↓ユーザ「hogehoge」をの作成
    • mysql> grant all privileges on *.* to hogehoge@localhost identified by 'hogehogeのパスワード' with grant option;
    • mysql> flush privileges;
      • 「all privileges」で全ての権限を有するように指定
        • 操作を限定したい場合は「SELECT/INSERT/UPDATE/DELETE」のうち必要なものをカンマ区切りで列挙する
          • ex) grant SELECT,INSERT
      • 「on *.*」で「全てのデータベース」の「全てのテーブル」が対象となる
      • 「to hogehoge@localhost」で「localhost」から接続した場合の「hogehoge」ユーザの設定 となる
        • 全てのホストからの接続を対象としたい場合は「@localhost」と「@"%"」で、2通り登録する必要があるらしい
      • 「by identified '〜'」で、このユーザのパスワードを設定
      • 「with grant option」で、このユーザが GRANT句を実行できるように設定
      • 「flush privileges;」で権限を反映しなおす(ようだ)。
  3. データベースの作成(必要に応じて)
    • データベース「testdb」を作成
      • mysql> create database testdb;
    • 操作対象のデータベースを「testdb」に変更
    • テーブル「tbl1」を作ってみる
      • mysql> create table members(num1 int auto_increment primary key, chr1 varchar(80));
  4. MySQLとの接続を解除する

Tips

  1. rootユーザのパスワードを忘れた場合の対処
    • ↓以下のコマンドでMySQLを起動する
      • # /usr/local/mysql/bin/mysqld_safe --user=mysql --skip_grant_tables &
    • MySQLに接続し、以下のコマンドを実行する

JBoss セットアップ

これまでは主にTomcatを使っていましたが、先を見据えてJBossにも手を出すことにしました。
簡単にセットアップまで。

環境

セットアップ手順

  1. JDKのインストール
    • 今回はj2se 1.4.2_10 のjdkここから入手してインストールしました。
    • インストール先は「C:\j2sdk1.4.2_10」としておきます。
    • 一応、コマンドラインから「java -version」を実行して「build 1.4.2_10-b03」などと表示されることを確認しておきます。
  2. JBoss のダウンロード
    • JBoss.org のサイトからアーカイブをダウンロード。ここでは「JBoss Application Server」の 4.0.3SP1(jboss-4.0.3SP1.zip)を使います。
    • ダウンロードしたファイルを解凍し、「C:\jboss-4.0.3SP1」に配置します。
  3. JBossの実行
    • C:\jboss-4.0.3SP1\bin\run.bat を実行します。
    • 起動したコマンドプロンプトで「Started in xxs:xxxms」(xは数値)と表示されれば、起動完了です。*1
    • ブラウザで「http://localhost:8080/」にアクセスして、ページが表示されればOKです(デフォルトのポートは8080番)。


簡単ですねー。Tomcatより難しいんだろう・・・というのは単なる思い込みでした。

*1:なお、起動中に「Port already in use: 1098」というようなエラーが出ることがありますが、その場合は起動に失敗しています。私の場合は1098番でぶつかりましたが、原因はMSNMessengerとの競合でした。また、ブラウザを複数立ち上げているとそういうこともあるようです。参考:d:id:mir:20060112:p2