weblogic serverの開発モードと本番モードの使い分け
DESCRIPTION
WebLogic Serverの開発モードと本番モードの基本、違い、切り替え方法などを解説。 CTC ソフトウェアサービス本部 ミドルウェアサポート部 山田 貴裕TRANSCRIPT
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
WebLogic Server勉強会@東京 LT
開発モードと本番モードの使い分け
ソフトウェアサービス本部 ミドルウェアサポート部
山田 貴裕
2013/5/23
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
はじめに
• 発表する内容は個人の見解であり、所属する組織の公式な見解ではありません。
• WebLogic Server 12c (12.1.1) を基に確認・検証しているため、他のバージョンでは多少異なる場合があります。
• WebLogic Server (WLS) の開発者ライセンスは無料になりました。
2
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
アジェンダ
• 開発モードと本番モードの基本
• 開発モードと本番モードの違い
• 開発モードだけで利用できる機能
• 開発モードと本番モードの切り替え
3
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
アジェンダ
• 開発モードと本番モードの基本
• 開発モードと本番モードの違い
• 開発モードだけで利用できる機能
• 開発モードと本番モードの切り替え
4
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードと本番モードの選択
• ドメイン構成ウィザードで選択
5
本番モードのデフォルト: JRockit JDK
開発モードのデフォルト: HotSpot(Sun) JDK
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
よくありがちな質問
• Q. 開発モードから本番モードにすることでパフォーマンスは大幅に向上しますか?
6
• A. いいえ。
モードによる直接的な違いは、それほどありません。
ただし、構成のデフォルト値の違いや、起動時のJVMオプション
の違いに起因して、パフォーマンスに差異が出てきます。
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
アジェンダ
• 開発モードと本番モードの基本
• 開発モードと本番モードの違い
• 開発モードだけで利用できる機能
• 開発モードと本番モードの切り替え
7
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードと本番モードの違い - 構成のデフォルト値
8
構成のデフォルト値 項目 開発モード 本番モード
内部アプリケーションのオンデマンド・デプロイメントを有効化
true false
ロギング (ドメイン・ログ、サーバー・ログ、HTTPアクセス・ログ、データソース・プロファイル・ログ 共通)
保存するファイル数 7 100
ローテーション・ファイル・サイズ 500 (KB) 5,000 (KB)
起動時にログ・ファイルを
ローテーション
true false
ロギング (サーバー・ログのみ)
ドメイン・ログ・ブロードキャスタ :
バッファ・サイズ
1 10
メモリー・バッファ・サイズ 10 500
サーバーのライフサイクルの
タイムアウト
30 (秒) 120 (秒)
weblogic.xml (page-check-seconds,
servlet-reload-check-secs,
resource-reload-check-secs)
1 (毎秒再ロードが行われる) -1 (再ロードは行われない)
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードと本番モードの違い - 起動オプションのデフォルト値
9
起動オプションのデフォルト値 項目 開発モード 本番モード
HotSpot JVM用オプション -client
-Xms256m
-Xmx512m
-XX:CompileThreshold=8000
-XX:PermSize=128m
-XX:MaxPermSize=256m
-Xverify:none
-server
-Xms256m
-Xmx512m
-XX:MaxPermSize=256m
WebLogic用オプション
(過去互換性)
-Dwlw.iterativeDev=
-Dwlw.testConsole=
-Dwlw.logErrorsToConsole=
-Dweblogic.ProductionModeEnabled=true
-Dwlw.iterativeDev=false
-Dwlw.testConsole=false
-Dwlw.logErrorsToConsole=false
<WLSドメイン>/bin/setDomainEnv(.sh|.cmd) のPRODUCTION_MODE 環境変数で制御
※変更しても構成のデフォルト値の変更は反映されない (別途切り替え方法を説明) .
.
JAVA Memory arguments: -Xms256m -Xmx512m -XX:MaxPermSize=256m
.
WLS Start Mode=Production
.
(setDomainEnv.sh)
PRODUCTION_MODE="true"
export PRODUCTION_MODE
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードと本番モードの違い - セキュリティ関連
セキュリティ関連 項目 開発モード 本番モード
boot.properties ドメイン構成時に管理サーバー用に自動的に作成される
ドメイン構成時に自動的に作成されない
SSLデモ用証明書 利用してもよい 非推奨であり、利用すると起動時に警告が表示される
ノード・マネージャ用のユーザー名、パスワード
管理者ユーザー名とパスワードで初期化される
ランダムに初期化される
config.xml内のパスワードの暗号化
暗号化せずに平文でも設定できる 暗号化する必要がある
管理コンソールでの変更 デフォルトでロックを自動取得して変更をアクティブ化する
ロックを明示的に取得して、アクティブ化する必要がある
サーブレットで未キャッチの例外
エラーページにスタックトレースが出力される
エラーページにはスタックトレースは出力されない
参考資料:
『boot.propertiesから見るWebLogic Serverの世界』 http://www.slideshare.net/OracleMiddleJP/bootpropertiesweblogic-server
『WebLogic Serverの運用管理:応用編』 - P22. 参考: 本番モードでの nmConnect() の実行 http://www.slideshare.net/OracleMiddleJP/20121122-wlstudy-wlsadvancehandsout-15381214
10
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
アジェンダ
• 開発モードと本番モードの基本
• 開発モードと本番モードの違い
• 開発モードだけで利用できる機能
• 開発モードと本番モードの切り替え
11
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - 自動デプロイ
• 自動デプロイ
– <WLSドメイン>/autodeployディレクトリにモジュールを配置・削除することで自動的に管理サーバーにデプロイ・アンデプロイ
12
展開形式でも、アーカイブ形式でもどちらでも可
特定の命名規則でデプロイされる
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - FastSwapデプロイメント
• FastSwapデプロイメント
– 再デプロイすることなく、クラスの変更を動的に反映 (制限あり)
– 展開形式でデプロイしたクラス (WEB-INF/classesなど) が対象
– weblogic.xml(WAR), weblogic-application.xml(EAR)で有効化
– Oracle Enterprise Pack for Eclipse (OEPE)ではGUIでも設定可能
13
<fast-swap>
<enabled>true</enabled>
</fast-swap>
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - クラス・キャッシュ
• クラス・キャッシュ
– WLS10.3.3 (10.3.4で正式) から利用でき、起動を高速化
– CLASS_CACHE環境変数をtrueに設定して実行
• 通常のメインクラスであるweblogic.Serverに代わって、com.oracle.classloader.launch.Launcherが起動
14
(startWebLogic.sh抜粋)
classCaching()
{
echo "Class caching enabled..."
JAVA_OPTIONS="${JAVA_OPTIONS} -Dlaunch.main.class=${SERVER_CLASS}
-Dlaunch.class.path="${CLASSPATH}" -Dlaunch.complete=weblogic.store.internal.LockManagerImpl
-cp ${WL_HOME}/server/lib/pcl2.jar"
export JAVA_OPTIONS
SERVER_CLASS="com.oracle.classloader.launch.Launcher"
}
:
if [ "${CLASS_CACHE}" = "true" ] ; then
classCaching
fi
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - Classloader Analysis Tool (CAT)
• Classloader Analysis Tool (CAT)
– http://localhost:7001/wls-cat/
15
:
• クラスがどこからロードされているかやコンフリクトしているかを検出し、修正方法をアドバイス
• 本番モードでも明示的にデプロイすることで使用可能 <WL_HOME>/server/lib/wls-cat.war
詳細は、Javaエバンジェリスト 寺田さんのブログ『WebLogic 10.3.4 が正式リリース』などを参照
http://yoshio3.com/2011/01/16/weblogic-10-3-4-が正式リリース/
クラスローダー
の階層表示
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - Webサービス・テスト・クライアント (1)
• Webサービス・テスト・クライアント
– 管理コンソールから[デプロイメント]→<モジュール>→<Webサービス名>
– [テスト]→<Webサービス名>→[Test Client]
16
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - Webサービス・テスト・クライアント (2)
• Webサービス・テスト・クライアント (続き)
– WebLogic Test Clientが開くので、メソッドに引数を指定して実行
17
JAX-WSを利用する場合は便利
(JAX-RSならお好みのHTTPクライアントで)
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードだけで利用できる機能 - 特定セッションのデバッグ
• 特定セッションのデバッグ
– デバッグ開始
• http://localhost:7001/foo/bar?wl_debug_session
• session.setAttribute("wl_debug_session", Boolean.TRUE);
– デバッグ停止
• session.removeAttribute("wl_debug_session");
– サーバー・ログの[ログの最低の重大度]をデバッグ以下にする
• <サーバー>→[ロギング]→[全般]→[詳細]
18
:
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
アジェンダ
• 開発モードと本番モードの基本
• 開発モードと本番モードの違い
• 開発モードだけで利用できる機能
• 開発モードと本番モードの切り替え
19
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードと本番モードの切り替え (1)
• 開発モード→本番モード
– 管理コンソールから<ドメイン>→[構成]→[全般]→[本番モード]
– <WLSドメイン>/bin/setDomainEnv(.sh|.cmd)も併せて修正
20
:
:
有効化して再起動
必要に応じてチェックを外す
(setDomainEnv.sh)
PRODUCTION_MODE="true"
export PRODUCTION_MODE
(setDomainEnv.cmd)
set PRODUCTION_MODE=true
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
開発モードと本番モードの切り替え (2)
• 本番モード→開発モード
– 管理コンソールでは変更不可
– WebLogic Scripting Tool (WLST) での変更
– <WLSドメイン>/bin/setDomainEnv(.sh|.cmd)も併せて修正
21
(setDomainEnv.sh)
PRODUCTION_MODE=""
export PRODUCTION_MODE
(setDomainEnv.cmd)
set PRODUCTION_MODE=
固定値になっている
connect('weblogic', 'welcome1', 't3://localhost:7001')
edit()
startEdit()
cd('/')
cmo.setProductionModeEnabled(false)
save()
showChanges()
activate()
exit()
変更後、再起動
falseでもよい(基本的にtrueか否かで認識)
Copyright (c)2013 ITOCHU Techno-Solutions Corporation
まとめ
• 個人の開発環境では開発モード
– WLSの開発者ライセンスは無料
– 開発モードで使える機能を理解し、効率的な開発を
– 基本的に単一サーバー・ドメインであることが前提
• それ以外の環境では本番モード
– モードによる動作差異をなくし、安全なテスト~運用を
22
Copyright (c)2013 ITOCHU Techno-Solutions Corporation