yamadamn’s blog

IT関連技術で経験したこと・気になったことをたまに書きます

WebLogicのExpressモード

はじめに

この記事はJPOUG Advent Calendarの22日目です。
昨日は[twitter:@kingyokkun]さんによる"DWHっぽい事でも書いてみる"でした。
明日はロジ子さん([twitter:@OraBlogs_jp])の登場です。
私からはミドルウェア関連のネタを取り上げたいと思います。

本文

かつてBEA社の時代は、WebLogic Server(以下WLS)のエディションとして、WebLogic Express(通称:WLX)がありました。
これは実際に機能が限定されており、ServletコンテナなどJava EEの一部機能を提供するものでした。

Oracle社製品になってからは、Expressエディションはなくなり、異なるエディション体系(Standard/Enterprise/Suite)に変わりました。
これらは基本的に同一インストールバイナリ*1であり、ライセンスに基いて利用する機能を選択するようになっています。*2

さて、このようにバイナリとしては単一になったものの、実はオプションを指定することで、かつてのWebLogic Expressと同様にランタイムの機能制限を加えて起動することができます。
やり方は非常に簡単。起動オプションとして以下を加えるだけです。

-DserverType=wlx
起動

では簡単にですが試してみましょう。やり方は色々ありますが、設定変更を簡単に試すために環境変数JAVA_OPTIONSを設定して起動します。
DOMAIN_HOME環境変数はお使いのWLSドメインディレクトリに合わせて設定ください。

  • Unix環境の場合
cd $DOMAIN_HOME
JAVA_OPTIONS="-DserverType=wlx"
export JAVA_OPTIONS
./startWebLogic.sh 
cd %DOMAIN_HOME%
set JAVA_OPTIONS=-DserverType=wlx
startWebLogic.cmd
管理コンソールから見た変更点

さて、何が変わったのでしょう。
管理コンソール(デフォルト http://:7001/console/)にログインしてみましょう。

これだけだと分かりませんね。では通常の画面コピーと比較してみましょう。

はい、メッセージング関連のサービスが消えているのが分かりますね。左側のドメイン構造から辿っても同様です。

マニュアル

これは隠し機能ではなく、マニュアルにも記載されています。

通常、WebLogic Serverインスタンスの起動時には、EJB、JMS、コネクタ、クラスタリング、デプロイメント、管理などすべてのサービスが起動します。ただし、WebLogic Serverに備わっている起動オプションを使用した場合には、これらのサービスの一部を起動対象から除外して、ランタイム範囲を軽量化できます。この起動モードを使用すると、WebLogic Serverの起動時間が短くなり、ホスト・マシンのリソース範囲が小さくなります。

WebLogic Serverインスタンスで起動対象とするサービス群は、サーバー・タイプ・オプションを取るServer Type起動コマンドで定義します。このリリースには、次の2種類のサーバー・タイプ・オプションがあります。

WebLogic Serverインスタンスでこれらのサービスを使用する必要がない場合、軽量化ランタイムを実行するとパフォーマンスが大幅に向上する可能性があります。

WebLogic Server起動時のランタイム使用量の制限
serverTypeに指定できる値

マニュアルには"wlx"だけでなく"wls"も指定できるとありますが、実際にWLS12.1.1でやってみても起動時に警告が出力されてしまいます。

<2012/12/22 18時07分50秒 JST> <Warning> <Server> <BEA-002641> <-DserverTypeは認識されない値に設定されています: wls。サーバーはすべてのサービスが有効な状態で起動します。> 

ただ、無効なタイプを指定すると、すべてのサービスが有効となるため結果的には同様です。
この辺りを調べたところ、どうやら$WL_HOME/server/lib/service-config.propertiesで定義されている内容に基づいているようです。

# SERVICES
connector weblogic.t3.srvr.servicegroups.ConnectorServiceGroup
ejb weblogic.t3.srvr.servicegroups.EJBServiceGroup
jms weblogic.t3.srvr.servicegroups.JMSServiceGroup

# SERVER CONFIGS
wlx-config ejb jms connector

これを変更すれば、カスタムのserverTypeも定義できそうですが、当然ながらサポート対象外となりますので、商用環境ではやめましょう。

まとめ

  • WebLogic Server 12cはJava EE 6のFull Profile互換製品*3ですが、「-DserverType=wlx」を付加して起動することでWeb Profileと似たような*4起動ができます。

*1:プラットフォーム別のインストーラやZIP版もありますが、今回の趣旨とは異なるため、詳細は割愛します。

*2:紳士協定に基づくものであり、ライセンス外の機能も利用しようと思えばできてしまう訳ですが、当然ながらライセンス違反となります。

*3:Java EE Compatibility参照

*4:ちゃんと調べていないので、後で調べて更新する予定です。