asadmin create-service domain-name>

ユーザーから見たGlassFish #2
GlassFish v3 Q&A
GlassFish Japan Users Group
蓮沼 賢志
http://www.coppermine.jp/
Twitter @btnrouge
Q.
GlassFishって何ですか?
A.
今、一番HotなWebアプリ
ケーションサーバーです!
解説
GlassFishの特徴:
 Java EEのリファレンス実装。
 オープンソース。
 Tomcat並に軽量。
 WebLogicに匹敵する高い信頼性。
 米Oracleが全面的に支援。
※Oracleによる有償サポートあり。
解説
GlassFish v3の強み:
機能単位での追加・削除・更新が可能
(機能追加は再起動不要の場合も…)
• Java EEのプロファイル対応にも利用
• 軽快な動作を求めるときは最小構成
• 大規模システムではフルスペック
★実装=HK2+OSGiランタイム
※WebLogic Server 12c にも類似のアー
キテクチャが採用されている(はず)
Q.
GlassFishをTomcatのよう
にサービスとして動かすこ
とは出来ますか?
A.
できます!
(あまり知られていませんが…)
解説
GlassFishのサービス化は、asadminで簡
単に実現できます。
# asadmin create-service <domain-name>
(For example…)
# asadmin create-service domain1
解説
ただし、GlassFishのサービス化は、OS
によって実装が異なります。
• Windows – Windowsサービス
• Solaris – SMF (Solaris 10以降)
• Linux – rcスクリプト
※asadminではサービスを削除できません。
削除方法については後述します。
解説
GlassFishのサービス化: Windows
同梱のwinswが使用されます。
具体的には、
C:¥glassfish3¥glassfish¥domains¥d
omain1¥bin¥domain1Service.exe
がサービスとして登録されます。
※同じフォルダ上のdomain1Service.xmlはサー
ビスの登録・解除の際に使われます。
解説
GlassFishのサービス化: Windows
【サービスの削除】
コマンドプロンプトで以下を入力:
> domain1Service.exe uninstall
参考:
winsw (Windows Service Wrapper)
http://kenai.com/projects/winsw
解説
GlassFishのサービス化: Solaris
SolarisのSMFに登録され、以降svcadm
およびsvcsコマンドで管理できます。
※登録されたことの確認手順
# svcs | grep GlassFish
online 7月_03
svc:/application/GlassFish/domain1:default
解説
GlassFishのサービス化: Solaris
【サービスの削除】
サービスを完全に停止させた後、svccfg
コマンドでサービスの削除を行います。
# svccfg delete
svc:/application/GlassFish/domain1:default
解説
GlassFishのサービス化: Linux
以下のrcスクリプトが作成されます。
/etc/init.d/GlassFish_domain1
OSの起動/停止に合わせて動作させるには、
適切なランレベルのディレクトリに、この
rcスクリプトへのシンボリックリンクを手
動で作成します。
解説
GlassFishのサービス化: Linux
【サービスの削除】
/etc/init.d/GlassFish_domain1 と
作成したシンボリックリンクすべてを削除
します。
Q.
JDKのバージョンを上げた
らGlassFishが動かなくなっ
たんですけど?
A.
/glassfish3/glassfish/config以下の
asenv.conf (Solaris/Linux/Mac/AIX)
asenv.bat (Windows)
を開いて、環境変数AS_JAVAが正し
いJDKの位置を指していること(も
しくはAS_JAVA自体が定義されてい
ないこと)を確認してください。
解説
GlassFish(実際にはasadmin)は以下の
優先順位で使用するJDKを決定します。
1. asenv.conf or asenv.batのAS_SERV
を確認する→あればその値を用いる
2. AS_SERVが見つからない場合は、パス
の通っている java or java.exe
【超重要】
GlassFishは環境変数JAVA_HOMEを参照
しません。
解説
Windowsユーザーはさらに注意!
• asenv.batに環境変数AS_SERVが定義
されていない
• パスにJDKが含まれていない
• JRE6以降がインストール済
(JDK同梱の公開JREを含む)
→C:¥WINDOWS¥System32¥java.exe
=JREを使おうとする(当然動かない)
Q.
GlassFish v3.1はJava 7の
環境で動作しますか?
A.
動作しません!
Java 7対応済のv3.1.1以降をご利
用ください。
なお、v3.1.1はJava SE 7と同日リリース
(2011年7月28日)されています。
Q.
GlassFish 4.0の管理コン
ソールがWebLogic風にな
るって、本当ですか?
A.
先ほどの画面はv4.0の新機能で、
「PaaSコンソール」といいます。
解説
GlassFish 4.0では、GlassFish自身がク
ラウド基盤として利用できます。
「PaaSコンソール」は、GlassFishベー
スのクラウドを管理するためのツールです。
★GlasFish 4.0本体のコンソールは、v2
からおなじみのあのインタフェースです。
Q.
Windows環境でGlassFish
のクラスタを組むにはどう
すればいいの?
A.
Windowsに限って言うと、実は
かなり厄介です。
(反対にSolaris/Linuxではとても簡単)
解説
まず前提として、GlassFishのSSHプロビ
ジョニングの仕組みをおさらいしましょう。
管理サーバー
scp
ssh
自分自身を
複製する
SSH
Session
ノード
解説
GlassFishのクラスタ構成にはSSH/SCP
が必須です。しかしWindowsはSSH実装
を持っていません。
代替案:
• Cygwin(OpenSSH)
• SFU/SUA + OpenSSH
• 商用SSHサーバー(Tectia Server等)
解説
【ここでWindowsユーザーに朗報!】
GlassFish 3.1.2 & 4.0では、
Windows環境下でDCOMをSSH/SCPの
代替として使えるようになります。
もはやCygwinも商用SSHも要りません!
※j-Interopというライブラリを使います。
Q.
コミュニティ版とOracle版
(製品版)はどこが違うの
ですか?
A.
ロゴと製品名を除いて、基本的に
は同じものです。品質にも差はあ
りません。
【補足】GlassFishの製品名
コミュニティ版 :
GlassFish Server Open Source Edition
Oracle版(製品版) :
Oracle GlassFish Server
解説
• GlassFishはコミュニティが設計からテ
スト、リリースまですべて担当します。
• Oracleはコミュニティ版GlassFishに追
加のモジュールと有償サポートを付加
して顧客に提供しています。
• コミュニティにはOracle社員も数多く
参加しています。
解説
GlassFishのライセンスは、コミュニティ
版とOracle版で全く異なります。
コミュニティ版 ※以下のどちらかを選択
• CDDL:OpenSolarisと同じ
• クラスパス例外付きGPL:OpenJDKと同じ
Oracle版(製品版)
• 一般ライセンス:有償、サポート付き
• OTN開発ライセンス:開発用途限定で無償
Q.
なぜGlassFishよりTomcat
の方が選ばれているのです
か?
A.
そんなこと、
私に聞くな!
解説
まあ、そういう感情論は置いておいて…
• Tomcatが長きにわたってServlet/JSP
の世界を牽引してきたのは揺るぎない
事実であり、数え切れない運用実績と
ノウハウが蓄積されています。
• Apache Licenseに基づくフリーソフト
ウェアのため、広く使われ、また多く
の開発者が携わっているのも確かです。
解説
• Tomcatは開発者・ユーザーともに非常
に多く、コアの部分はJ2EEのリファレ
ンス実装に採用されていた時期もあり
ます。
• 以上の経緯から「Tomcatは長い歴史を
持つ、安定したサーバーである」とい
う認識がほぼ定着しています。
ところが、昨今のTomcat
を見ていると、そうとも言
えないんだな、これが…
解説
TomcatとGlassFishの間には、製品の品
質に関して考え方に大きな違いがあります。
解説
Tomcatのコンポーネントには、安定した
実装、中途半端な実装、実験的な実装があ
ります。
【問題点】
• Tomcatは正式リリースであっても、こ
れらが混在しています。
• 中途半端な実装や実験的な実装につい
て安定した実装と明確に区別しないこ
ともあります。
解説
Tomcatの中途半端or実験的な実装の例
• コネクションプール
• クラスタ機能
Tomcat 6系までは代表的な「実験的」実装。
Tomcat 7系では?
• NIOコネクタ、ノンブロッキングI/O
Grizzlyとの間にはいまだ越えられない壁が…
• バルブ
実装そのものは安定。ただし、比較的新しい
機能なのに早速、将来削除の方向に…
解説
GlassFishのコンポーネントは、リリース
時には安定した実装しか含まれません。
リリースまでに安定しない実装は次期リ
リースに先送りされたり、あるいは削除さ
れることもあります。
※上記の品質管理方針のため、GlassFish
はリリース直後の段階でかなり高い品質を
誇ります。
解説
GlassFishの中途半端or実験的な実装の例
• v3のクラスタ機能:v3.1に先送り
「v3は商用では使えない」という悪評が…
• v3の新管理コンソール:中止
• 動的言語サポート:縮小傾向
プロジェクトの体力の問題で機能・品質を維
持できない。
• GlassFish 3.2 :計画中止
成果はv4.0(一部v3.1.2)に引き継がれた。
Q.
GlassFishでわからないこと
があったら、どこに質問す
ればいいですか?
A.
周りに詳しい方がいればその方に
質問するのが手っ取り早いです。
※しかし、そのような恵まれた環境に置か
れている方々は残念ながら少数派です。
そこで私たちはMLを用意しています。
GlassFish関連のメーリングリスト
★本家(glassfish.org)
http://glassfish.java.net/public/mailing-lists.html
• ユーザー向けML : [email protected]
• 開発者向けML : [email protected]
★日本GlassFishユーザー会
https://groups.google.com/forum/#!forum/glassfish
• ML : [email protected]