SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
50 Tips in 50 Minutes for
     GlassFish Fans

     KUBOTA Yuji (@sugarlife)




                                #glassfishjp
29         40
50 Tips in 50 Minutes for
     GlassFish Fans

     KUBOTA Yuji (@sugarlife)




                                #glassfishjp
自己紹介

• KUBOTA Yuji (@sugarlife)
 • 難聴者
• 通信インフラ系企業
 • トラブルシューター / Java EE
• JVM (主にGC) 好き

                             #glassfishjp
50 Tips in 50 Minutes for GlassFish Fans


• JavaOne 2012 Technical Session
• 幅広くTipsを紹介し、新しくGlassFishを使う
 あなたへ「知らなかったけどこれから使える
 な」と感じて帰ってもらう

• このセッションはリファレンス的な役割
 •   詳細:http://wikis.oracle.com/display/GlassFish/50+Tips

 •   資料:https://oracleus.activeevents.com/connect/
     sessionDetail.ww?SESSION_ID=4701


                                                  #glassfishjp
29 Tips in 40 Minutes for GlassFish Fans


• 29Tips = 50 Tips - いままでに紹介したこと
  あるもの - 使わなさそうな機能(クラスタ/
  OSGi関連))

• GlassFishは開発用かJavaEEの最新機能のお
  試しで使うことが多い = GlassFishその物の
  学習コストはなるべく避けたい = 本Tipsの役
  立ち所

• GlassFish OpenSource Edition 3.1.2.2 の
  Multi-Languageで確認。
                                   #glassfishjp
管理コンソール関連Tips




                #glassfishjp
#1 Using the login Command

• リモート管理すると毎回 username/
  passwordを聞かれるが、login commandを
  使うと格納され、以降はこれを利用して(複数)
  サーバにアクセスする場合に回避できる。

• $ asadmin --host ouch login
  username / password が尋ねられ、
  入力すると .asadminpass に格納される。

• $ asadmin --host ouch list-clusters
  c1 not running
                                    #glassfishjp
#2 Use Multimode for Batch Processing

• 複数バッチ処理の走らせ方
• $ cat ./batchfile.txt
  create-cluster c1
  create-local-instance --cluster c1 i1
  create-local-instance --cluster c1 i2

• $ asadmin --terse(-t) --user admin
  multimode --file ./batchfile.txt

• 途中で終了させる場合はバッチを落とす
  (exit/quit/Ctrl-D/Ctrl-Z)
                                       #glassfishjp
#3 Use Shell Pipelines With Multimode




• シェルスクリプトによる複数処理の走らせ方
• $ for i in {1..10};
 do
  echo "create-local-instance server${i}";
 done ¦ asadmin




                                   #glassfishjp
#4 Using the AS_DEBUG env Variable

• クライアントサイドのデバッグ出力
•   コマンドプロセスの詳細を得られる

    •   http://localhost:4848/__asadmin/uptime

•   $ export AS_DEBUG=true
    $ asadmin uptime
    CLASSPATH= ./bin/../glassfish/modules/admin-cli.jar
    Commands: [uptime]
    asadmin extension directory: /opt/glassfish-3.1.2.2-ml/glassfish/lib/asadmin
         :
    ------- RAW RESPONSE ---------
    PROCESSING MANIFEST...
    doHttpCommand succeeds
    上へ29秒
    コマンドuptimeは正常に実行されました。

                                                                      #glassfishjp
#5 The AS_LOGFILE Environment Variable


• 動作中の(multimodeも含む)asadminコマン
  ド履歴をログファイルに保存する

• $ export AS_LOGFILE=/tmp/as.log
  $ (適当にasadminのコマンドを実行する)
  $ cat /tmp/as.log
  12/06/2012   20:07:12   EXIT:   0   asadmin   login
  12/06/2012   20:07:12   EXIT:   0   asadmin   uptime
  12/06/2012   20:07:23   EXIT:   0   asadmin   list-clusters
  12/06/2012   20:07:23   EXIT:   0   asadmin   list-clusters
  12/06/2012   20:07:23   EXIT:   0   asadmin   multimode


                                                                #glassfishjp
#8 asadmin Command Help


• asadmin はヘルプが充実している
• $ asadmin list-commands
 **********ローカル・コマンド**********
 backup-domain
 change-admin-password
 change-master-password
    :
 **********リモート・コマンド**********
 add-library               disable-secure-admin-principal
 add-resources                 enable
      :



                                                #glassfishjp
#8 asadmin Command Help


• $ asadmin start
  コマンドstartが見つかりません。
  コマンド名の入力を確認してください。このコマンドは、インストー
  ルされていないパッケージによって提供される可能性があります。
  最も一致するローカルおよびリモート・コマンド:
    restart-domain
    restart-instance
    restart-local-instance
    start-cluster
     :




                           #glassfishjp
#8 asadmin Command Help

• $ asadmin help enable-secure-admin
  ENABLE-SECURE-ADMI(1) ENABLE-SECURE-ADMI(1)
  名前
       enable-secure-admin -
       セキュリティ保護された管理を有効にし(まだ有効になってい
  ない場合)、オプションで、DASからインスタンスへの管理メッセー
  ジに使用する別名、またはインスタンスからDASへの管理メッセー
  ジに使用する別名を変更 します。


  概要
       enable-secure-admin [--help]
       [--adminalias=alias]
       [--instancealias=alias]
  :

                                      #glassfishjp
#31 - #34 RESTに関するTips




• RESTは蓮沼さんの資料があるのでそちらを!
• http://www.slideshare.net/btnrouge/
  glassfish-rest




                              #glassfishjp
インストール&セットアップ関連Tips




               #glassfishjp
#35 Using Domain Templates

• カスタマイズしたドメインを作成するときに
  はテンプレートを利用しよう

• テンプレートは <InstallDir>/glassfish/lib/
  templates/ にある。
  $ cd <InstallDir>/glassfish/lib/templates/
  $ cp domain.xml mydomain.xml
  mydomain.xmlを編集してカスタマイズする

• $ asadmin create-domain --template
  mydomain.xml mynewdomain
                                    #glassfishjp
#35 Using Domain Templates




• $ asadmin verify-domain-xml mynewdomain
  テストがすべて成功しました。domain.xmlは有
  効です。




                                 #glassfishjp
#37 Backup and Restore Domain

• ドメインのバックアップ/復元
• $ asadmin backup-domain/restore-
  domain/list-backups

• OSS版はドメイン停止する必要がある。
  Oracle版はsuspend-domainコマンドで一時
  停止させる必要がある。

• バックアップの削除は保存しているファイル
  を消す。(デフォルトはglassfish/domains/
  domain1/backups)
                         #glassfishjp
#37 Backup and Restore Domain


• 自動化は、有償版(Oracle GlassFish Server)
  に準備されている。

• $ asadmin (create¦delete)-backup-config
• $ asadmin (create¦delete)-schedule
  ※ cron-based schedule

• OS版は止める必要があるので自動化の恩恵が
  薄い

                                  #glassfishjp
デプロイ関連Tips




             #glassfishjp
#10 Configure Log4J

• Log4Jを全体的に有効にする方法
 • $ cp somewhere/log4j.jar glassfish/lib
    $ cp somewhere/log4j.properties
    glassfish/domains/domain1/config/

 • $ asadmin create-jvm-option -
    Dlog4j.configuration=file¥¥://$
    {com.sun.aas.instanceRoot}/config/
    log4j.properties

 • $ asadmin restart-domain
                                   #glassfishjp
#10 Configure Log4J




• アプリごとに有効にする場合
 • $ cp somewhere/log4j.jar WEB-INF/
   classes

 • もしくは ejb-beans.jar の直下に配置する


                                 #glassfishjp
#19 Application Versioning

• アプリケーションのバージョニング。同アプ
    リの複数のバージョンが同時に起動しないよ
    うに管理する(upgrade/rollback)。

•   $ asadmin deploy --name=AppName:RC1 --
    enable=false myApp.war
    $ asadmin enable AppName:RC1
    $ asadmin undeploy AppName:Beta*

•   $ asadmin deploy --name AppName:RC1 --retire-
    timeout=3600 myApp.war

                                         #glassfishjp
#20 Application Scoped Resources




• JDBCやResource Adapter、JavaMail等の
  リソースをアプリケーションスコープで定義し
  たい場合は、リソース定義をWEB-INF内の
  glassfish.resources.xmlに記述する。




                                #glassfishjp
#20 Application Scoped Resources



•   <?xml version="1.0" encoding="UTF-8"?>
       <resources>
            <jdbc-resource enabled="true" jndi-name="jdbc/
                    myDatasource" object-type="user"
                     pool-name="myConnectionPool">
                <description/>
            </jdbc-resource>
       </resources>

•   $ asadmin redeploy --properties
    preserveAppScopedResources=true MyApp.ear




                                                     #glassfishjp
#30 Remote Deployment in NetBeans


•   リモートサーバを利用した開発方法

    •   セキュリティの#9で説明したSecure
        Administrationを有効にする。

    •   ライブラリとして開発環境にもGlassFishが必要。

    •   開発/デプロイ/デバッグは可能。それ以外の機能
        (Deploy-on-Save)は利用不可能。

    •   NetBeansの設定方法は、通常のサーバ登録の最後の
        ステップで、リモートドメインを登録を選択するだ
        け。

                                 #glassfishjp
セキュリテリ関連Tips




               #glassfishjp
#9 Secure Administration



• リモート管理権限はデフォルトではオフに
 なっている

• 管理パスワードは以下で変更できる。空パス
 ワードはダメ。

• $ asadmin change-admin-password

                              #glassfishjp
#9 Secure Administration


• リモート管理権限、ドメイン内のDASとイン
 スタンスで相互通信の暗号化を有効にするに
 は以下の通り(DASとインスタンスを再起動す
 る必要あり)

• $ asadmin enable-secure-admin
 • 豊富な機能があるので是非 asadmin help
   enable-secure-admin を読みましょう。


                         #glassfishjp
#9 Secure Administration




• Secure Administrationを無効にするには
 • $ asadmin disable-secure-admin



                             #glassfishjp
#11 Using Password Aliases

• パスワードの別名(alias)の定義の仕方。
 • DB/JMS/etcで使い分ける時に便利。
• <InstallDir>/glassfish/domains/domain1/
  config/domain.xml

 • <property name="password"
   value="secret_p@assword"/>

• この方法は当然ながらべた書きになるので(社
  会的に)死ぬときがある
                                  #glassfishjp
#11 Using Password Aliases



• domain.xmlに書く以外には…
 • $ asadmin create-password-alias
   DB_password_alias
   エイリアス・パスワード を入力してください>
   エイリアス・パスワード をもう一度入力してください>
   コマンド create-password-alias は正常に実行されました。




                                     #glassfishjp
監視関連Tips




           #glassfishjp
#22 How To Enable Server Monitoring




• 監視には結構いいのを揃えている。(CLI,
 REST, JMX access, Web Console)。

• 監視レベルは、LOW/HIGH/OFFの三つ。
 • デフォルトではオフになっているが、再起
  動することなくオンにできる。



                                #glassfishjp
#22 How To Enable Server Monitoring



• 例:すべての監視データを取得
 • $ asadmin get -m "*"
   $ asadmin get --monitor "*"
   報告する監視データがありません。

• 例:Web Container on the DAS を監視
 • $ asadmin enable-monitoring --modules
   web-container=HIGH

                                 #glassfishjp
#22 How To Enable Server Monitoring




• 例:EHB Cointainer on cluster(c1)を監視
 • $ asadmin enable-monitoring --target
   c1 --modules ejb-countainer=LOW




                                 #glassfishjp
#22 How To Enable Server Monitoring


• モジュール名とそれぞれの監視レベルは以下
    のコマンドで確認できる

    • $ asadmin get server.monitoring-
      service.*
      server.monitoring-service.dtrace-enabled=false
      server.monitoring-service.mbean-enabled=true
      server.monitoring-service.monitoring-enabled=true
         :

•   正直、モジュール名を打つのが面倒なのでGUI(管理コンソール)から
    やった方が早い。


                                                     #glassfishjp
#22 How To Enable Server Monitoring




                               #glassfishjp
#23 How To View Monitoring Data (CLI)


• コマンドラインで監視データを取得する方法
• 監視データは以下によって変更される階層木
 構造である。

• どのモジュールがロードされているか
• どのモジュールが監視中(monitoring-
  enabled)になっているか

• デプロイされているアプリケーション
                                #glassfishjp
#23 How To View Monitoring Data (CLI)




• 監視データの例
•     server.applications
                  ¦--- application1
                  ¦ ¦--- ejb-module-1
                  ¦ ¦        ¦--- ejb1 *
                  ¦ ¦                ¦--- bean-cache (for entity/sfsb)




                                                          #glassfishjp
#23 How To View Monitoring Data (CLI)




• 例:JVMのベンダー確認
 • $ asadmin get -m
   "server.jvm.runtime.vmvendor-current-
   current"

 • server.jvm.runtime.vmvendor-current-
   current = Oracle Corporation



                                  #glassfishjp
#23 How To View Monitoring Data (CLI)

• 例:ヒープ使用量
 • $ asadmin get -m
   "server.jvm.memory.usedheapsize*"
   server.jvm.memory.dotted-name = server.jvm.memory
   server.jvm.memory.usedheapsize-count-count = 95042176
   server.jvm.memory.usedheapsize-count-description =
   Amount of used memory in bytes
   server.jvm.memory.usedheapsize-count-lastsampletime =
   1355317444825
   server.jvm.memory.usedheapsize-count-name =
   UsedHeapSize
   server.jvm.memory.usedheapsize-count-starttime =
   1355317091175

                                              #glassfishjp
#23 How To View Monitoring Data (CLI)




• 例:デプロイしているアプリケーションのア
 クティブセッション数

• $ asadmin get -m
  "server.applications.mywebapp.server.ac
  tivesessionscurrent-current"
  server.applications.mywebapp.server.activesessionscurrent-
  current = 5




                                                 #glassfishjp
#24 Using the monitor Command




• コマンドによる監視方法
• $ asadmin monitor --interval 5 --type jvm
  server
                  JVM 監視
   UpTime(ミリ秒)        ヒープメモリーおよびヒープでないメモリー (バイト)
   現在の値          最小       最大        低 高   カウント
   1345760       67276800 753860608 0 0   193273856
   1350761       67276800 753860608 0 0   193372160




                                                      #glassfishjp
#24 Using the monitor Command


• $ asadmin monitor --interval=5 --type
  webmodule server
   asc ast rst st ajlc mjlc tjlc aslc   mslc   tslc
   0   0  0   0   0   0    0    0     0      0
   0   0  0   0   0   0    0    0     0      0




• 各凡例の意味はモニター中に h<Enter> を入
  力すると説明が出る。
   * ajlc = アクティブな JSP ページの数                              *
   * asc = 現在アクティブなセッションの数                            *
   :




• 監視できる項目は asadmin help monitor で
  確認しよう!
                                                              #glassfishjp
#24 Using JMX to Access Monitoring

• JMXを利用して監視する。
 • デプロイしてアクセスするとserver.logに以
     下の様なメッセージが現れる。

     •   JMXStartupService has started
         JMXConnector on JMXService URL
         service:jmx:rmi://192.168.2.102:8686/jndi/
         rmi://192.168.2.102:8686/jmxrmi

•   このURL(service:を含む)を、jconsoleやjvisualvmの
    Remote Process等に指定するとリアルタイムで監視
    することが可能。
                                            #glassfishjp
#39 Tracing SQL Queries

• 「このSQLを書いたのは誰だあっ!!」を言
  うためにログをとる。

• JDBC connection poolで実行されたSQL命
  令を追いかける。JPAの使用は問わない。

• javax.enterprise.resource.sqltrace のlog
  level は FINE(default)。

• org.glassfish.api.jdbc.SQLTraceListenerを
  利用して、SQLTraceRecordオブジェクトを
  記録するように実装できる。
                         #glassfishjp
#39 Tracing SQL Queries



• $ asadmin set server.resources.jdbc-
  connection-pool.DerbyPool.sql-trace-
  listeners=MyListener

• Query実行時のMethod名などを吐くことが
  できる。 詳細はAPI参照。




                                   #glassfishjp
#39 Tracing SQL Queries


• M分間隔で上位N位の高頻度で実行されている
 SQL命令をレポートする。MとNは以下の通
 りに指定する。

•   $ asadmin set server.resources.jdbc-connection-
    pool.<POOL_NAME>.property.time-to-keep-queries-in-
    minutes=10

•   $ asadmin set server.resources.jdbc-connection-
    pool.<POOL_NAME>.property.number-of-top-queries-to-
    report=15



                                                 #glassfishjp
#40 Detecting JDBC statement and
        connections leaks and reclaim
•   JDBC statementのタイムアウトとclose漏れ
    (connection leakage)を検出する

•   $ asadmin set server.resources.jdbc-connection-
    pool.DerbyPool.xxx=VALUE

•   xxx=VALUE :

    •   connection-leak-timeout-in-seconds="10"

    •   statement-timeout-in-seconds="6"

    •   statement-leak-timeout-in-seconds="2"

    •   connection-leak-reclaim= true

    •   statement-leak-reclaim= true
                                                  #glassfishjp
#40 Detecting JDBC statement and
       connections leaks and reclaim



•   設定後、サーバ再起動が必要。close漏れの可能性があ
    る場合、デプロイ時に以下のようなメッセージが出る

•   WARNING: A potential statement leak detected for connection
    pool DerbyPool. The stack trace of the thread is provided
    below :
      com.sun.gjc.spi.base.StatementWrapper.
    (StatementWrapper.java:81)
      :
      com.mypackage.MyTestBean.execute(TestBean.java:00)




                                                    #glassfishjp
更新(Update)関連Tips




                   #glassfishjp
#41 Using Update Center to Keep Current

•   Update Centerを使ってネットワークリポジトリから
    更新する

    •   <InstallDir>/bin/pkg

        •   $ pkg list -u で更新保留中のパッケージが解る

        •   $ pkg image-update でGlassFishをアップデー
            トできる

    •   > You are running on a 64 bit Linux distribution
        and the 32 bit Linux compatibility libraries do
        not appear to be installed.

        •   oh...
                                               #glassfishjp
#41 Using Update Center to Keep Current




•   pkg のコアな使い方は以下を参照!

    •   http://www.coppermine.jp/docs/programming/
        2012/12/glassfish-internals.html

    •   @btnrougeさんのサイト

•   Web Profiler, Full Profiler以外の俺俺Profilerも作れる




                                          #glassfishjp
#42 Update Center GUI Simplifies Updates




• シンプルなGUIでUpdate Centerを使える。
 • <InstallDir>/bin/updatetool
 • もしくは、notifierがGlassFishインストー
   ル時にインストールされる。




                                 #glassfishjp
#46 Upgrading to a Newer Version


• GlassFishのバージョンの更新方法
•   二通りある

    •   Side-by-side:

        •   <InstallDir>/glassfish/bin/asupgrade --c

        •   Web管理コンソール


    •   In-place:

        •   <InstallDir>/bin/pkg image-update

        •   <InstallDir>/bin/updatetool


                                                      #glassfishjp
#47 Upgrade from Open Source to
            Commercial

• 有料版へ移行する方法
 • OS版のリポジトリを削除する
  •   $ pkg unset-publisher dev.glassfish.org
      stable.glassfish.orag release.javaeesdk.oracle.com


• 有料版のリポジトリを追加する
  •   $ pkg set-publisher -P -O http://pkg.oracle.com/
      glassfish/v3/release release.glassfish.oracle.com

  •   $ pkg set-publisher -O http://pkg.oracle.com/glassfish/
      v3/dev dev.glassfish.oracle.com


                                                   #glassfishjp
#47 Upgrade from Open Source to
           Commercial




• アドオンをインストールする
 •   $ pkg install glassfish-enterprise-(web¦full)-profiler




                                                    #glassfishjp
#48 Extending and Updating Inside a Closed
                Network
• 閉域網での更新方法

    •   pre-installed toolkit imageとstarter repositoryを
        インストールする。

    •   support.oracle.comからリポジトリをDownloadす
        る(zipファイル)

    •   ローカルリポジトリデーモンを起動する

        •   $ pkg.depotd -d <Directory> -p <Port>


    •   ローカルリポジトリを設定する

        •   $ pkg -R <GlassFish> set-publisher -Pe -O http://
            <mylocalhost>:<port> <publisher>
                                                          #glassfishjp
JVM関連Tips




            #glassfishjp
#29 What s in your JVM ? - Troubleshoot


• トラブルシュートに役立つあれこれ
• Server thread dumpの取り方
 •   $ asadmin generate-jvm-report --type=thread¦
     class¦memory¦summary(default)¦log

     •   日本語で出てくるのでthreadがおすすめ。

• JVM Command Line Tools
 •   jps / jstack / jstat / jinfo / jmap / jhat

 •   GlassFish関係なかった。

                                                  #glassfishjp
#44 Controlling the Server's JVM


• 起動時、どのようにJVMを選択?
 1. domain.xmlの<java-config>に記載された
 java-home

 2. AS_JAVA(glassfish/config/asenv.conf)

 3. JAVA_HOME (環境変数)

 4. java.home (asadminを実行しているJVM
 のシステムプロパティ)


                                #glassfishjp
#45 Controlling the JVM Options

• JVM Optionの設定方法
 • domain.xmlの<java-config>は複数箇所で
   記述されている(default-config, server-
   config, cluster1-config)ので猥雑。CLIか
   ら設定しよう。

 • $ asadmin (list¦create¦delete)-jvm-
   options --target <server,cluser-
   name,instance-name> <JVM Option>

 • サーバーの再起動の必要はない。
                                    #glassfishjp
その他のTips




           #glassfishjp
#36 GlassFish Hosting Providers




 • #ステマ



                          #glassfishjp
#49 GlassFish Docs


•   http://docs.oracle.com/cd/E26576_01/index.htm

•   http://dlc.sun.com.edgesuite.net/glassfish/3.1.2/release/
    glassfish-ose-3.1.2-docs-pdf.zip


• 日本語の公式サイト                   (http://glassfish.java.net/ja/)は

    古いから気を付けよう!

    • いまだに2.1.1がトップにある。(そして現
      役。)


                                                    #glassfishjp
#50 How to reach us?




• GlassFish Forum:
 • http://www.java.net/forums/glassfish/
    glassfish

• users@glassfish.java.net


                                #glassfishjp
Finish!




• Thank You for Listing!



                           #glassfishjp

Contenu connexe

Tendances

PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
Ryuji Yamashita
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
junichi anno
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 
第6回 ZABBIX-JP勉強会
第6回 ZABBIX-JP勉強会第6回 ZABBIX-JP勉強会
第6回 ZABBIX-JP勉強会
Kodai Terashima
 

Tendances (19)

今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7今から備えるMySQL最新バージョン5.7
今から備えるMySQL最新バージョン5.7
 
PowerShell DSC と Linux
PowerShell DSC と LinuxPowerShell DSC と Linux
PowerShell DSC と Linux
 
Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識Windows PowerShell 2.0 の基礎知識
Windows PowerShell 2.0 の基礎知識
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理PowerShell を使用した Hyper-V の管理
PowerShell を使用した Hyper-V の管理
 
Mysql toranomaki
Mysql toranomakiMysql toranomaki
Mysql toranomaki
 
Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514Power shell の基本操作と処理の自動化 v2_20120514
Power shell の基本操作と処理の自動化 v2_20120514
 
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
Windows PowerShell によるWindows Server 管理の自動化 v4.0 2014.03.13 更新版
 
MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良
 
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbcZabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理Windows PowerShell 5.0 と Windows Server vNext の管理
Windows PowerShell 5.0 と Windows Server vNext の管理
 
20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
 
MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形MySQL 5.7が魅せる新しい運用の形
MySQL 5.7が魅せる新しい運用の形
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
What's New in MySQL 5.7 Security
What's New in MySQL 5.7 SecurityWhat's New in MySQL 5.7 Security
What's New in MySQL 5.7 Security
 
第6回 ZABBIX-JP勉強会
第6回 ZABBIX-JP勉強会第6回 ZABBIX-JP勉強会
第6回 ZABBIX-JP勉強会
 

Similaire à 29 Tips in 40 Minitues for GlassFish Fans #glassfishjp

MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
学 松崎
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 

Similaire à 29 Tips in 40 Minitues for GlassFish Fans #glassfishjp (20)

#glassfishjp GlassFishとProfiler
#glassfishjp GlassFishとProfiler#glassfishjp GlassFishとProfiler
#glassfishjp GlassFishとProfiler
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
SQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data PlatformSQL Server 2019 とともに知る Microsoft Data Platform
SQL Server 2019 とともに知る Microsoft Data Platform
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
 
ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報ArcBox のおさらいと最新情報
ArcBox のおさらいと最新情報
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
ZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツZabbixによるAWS監視のコツ
ZabbixによるAWS監視のコツ
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeD...
 
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニング
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
Zabbixを2分でインストール
Zabbixを2分でインストールZabbixを2分でインストール
Zabbixを2分でインストール
 

Plus de Yuji Kubota

Plus de Yuji Kubota (20)

Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
 
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識
 
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
 
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
 
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 

Dernier

Dernier (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

29 Tips in 40 Minitues for GlassFish Fans #glassfishjp

  • 1. 50 Tips in 50 Minutes for GlassFish Fans KUBOTA Yuji (@sugarlife) #glassfishjp
  • 2. 29 40 50 Tips in 50 Minutes for GlassFish Fans KUBOTA Yuji (@sugarlife) #glassfishjp
  • 3. 自己紹介 • KUBOTA Yuji (@sugarlife) • 難聴者 • 通信インフラ系企業 • トラブルシューター / Java EE • JVM (主にGC) 好き #glassfishjp
  • 4. 50 Tips in 50 Minutes for GlassFish Fans • JavaOne 2012 Technical Session • 幅広くTipsを紹介し、新しくGlassFishを使う あなたへ「知らなかったけどこれから使える な」と感じて帰ってもらう • このセッションはリファレンス的な役割 • 詳細:http://wikis.oracle.com/display/GlassFish/50+Tips • 資料:https://oracleus.activeevents.com/connect/ sessionDetail.ww?SESSION_ID=4701 #glassfishjp
  • 5. 29 Tips in 40 Minutes for GlassFish Fans • 29Tips = 50 Tips - いままでに紹介したこと あるもの - 使わなさそうな機能(クラスタ/ OSGi関連)) • GlassFishは開発用かJavaEEの最新機能のお 試しで使うことが多い = GlassFishその物の 学習コストはなるべく避けたい = 本Tipsの役 立ち所 • GlassFish OpenSource Edition 3.1.2.2 の Multi-Languageで確認。 #glassfishjp
  • 7. #1 Using the login Command • リモート管理すると毎回 username/ passwordを聞かれるが、login commandを 使うと格納され、以降はこれを利用して(複数) サーバにアクセスする場合に回避できる。 • $ asadmin --host ouch login username / password が尋ねられ、 入力すると .asadminpass に格納される。 • $ asadmin --host ouch list-clusters c1 not running #glassfishjp
  • 8. #2 Use Multimode for Batch Processing • 複数バッチ処理の走らせ方 • $ cat ./batchfile.txt create-cluster c1 create-local-instance --cluster c1 i1 create-local-instance --cluster c1 i2 • $ asadmin --terse(-t) --user admin multimode --file ./batchfile.txt • 途中で終了させる場合はバッチを落とす (exit/quit/Ctrl-D/Ctrl-Z) #glassfishjp
  • 9. #3 Use Shell Pipelines With Multimode • シェルスクリプトによる複数処理の走らせ方 • $ for i in {1..10}; do  echo "create-local-instance server${i}"; done ¦ asadmin #glassfishjp
  • 10. #4 Using the AS_DEBUG env Variable • クライアントサイドのデバッグ出力 • コマンドプロセスの詳細を得られる • http://localhost:4848/__asadmin/uptime • $ export AS_DEBUG=true $ asadmin uptime CLASSPATH= ./bin/../glassfish/modules/admin-cli.jar Commands: [uptime] asadmin extension directory: /opt/glassfish-3.1.2.2-ml/glassfish/lib/asadmin : ------- RAW RESPONSE --------- PROCESSING MANIFEST... doHttpCommand succeeds 上へ29秒 コマンドuptimeは正常に実行されました。 #glassfishjp
  • 11. #5 The AS_LOGFILE Environment Variable • 動作中の(multimodeも含む)asadminコマン ド履歴をログファイルに保存する • $ export AS_LOGFILE=/tmp/as.log $ (適当にasadminのコマンドを実行する) $ cat /tmp/as.log 12/06/2012 20:07:12 EXIT: 0 asadmin login 12/06/2012 20:07:12 EXIT: 0 asadmin uptime 12/06/2012 20:07:23 EXIT: 0 asadmin list-clusters 12/06/2012 20:07:23 EXIT: 0 asadmin list-clusters 12/06/2012 20:07:23 EXIT: 0 asadmin multimode #glassfishjp
  • 12. #8 asadmin Command Help • asadmin はヘルプが充実している • $ asadmin list-commands **********ローカル・コマンド********** backup-domain change-admin-password change-master-password : **********リモート・コマンド********** add-library disable-secure-admin-principal add-resources enable : #glassfishjp
  • 13. #8 asadmin Command Help • $ asadmin start コマンドstartが見つかりません。 コマンド名の入力を確認してください。このコマンドは、インストー ルされていないパッケージによって提供される可能性があります。 最も一致するローカルおよびリモート・コマンド: restart-domain restart-instance restart-local-instance start-cluster : #glassfishjp
  • 14. #8 asadmin Command Help • $ asadmin help enable-secure-admin ENABLE-SECURE-ADMI(1) ENABLE-SECURE-ADMI(1) 名前 enable-secure-admin - セキュリティ保護された管理を有効にし(まだ有効になってい ない場合)、オプションで、DASからインスタンスへの管理メッセー ジに使用する別名、またはインスタンスからDASへの管理メッセー ジに使用する別名を変更 します。 概要 enable-secure-admin [--help] [--adminalias=alias] [--instancealias=alias] : #glassfishjp
  • 15. #31 - #34 RESTに関するTips • RESTは蓮沼さんの資料があるのでそちらを! • http://www.slideshare.net/btnrouge/ glassfish-rest #glassfishjp
  • 17. #35 Using Domain Templates • カスタマイズしたドメインを作成するときに はテンプレートを利用しよう • テンプレートは <InstallDir>/glassfish/lib/ templates/ にある。 $ cd <InstallDir>/glassfish/lib/templates/ $ cp domain.xml mydomain.xml mydomain.xmlを編集してカスタマイズする • $ asadmin create-domain --template mydomain.xml mynewdomain #glassfishjp
  • 18. #35 Using Domain Templates • $ asadmin verify-domain-xml mynewdomain テストがすべて成功しました。domain.xmlは有 効です。 #glassfishjp
  • 19. #37 Backup and Restore Domain • ドメインのバックアップ/復元 • $ asadmin backup-domain/restore- domain/list-backups • OSS版はドメイン停止する必要がある。 Oracle版はsuspend-domainコマンドで一時 停止させる必要がある。 • バックアップの削除は保存しているファイル を消す。(デフォルトはglassfish/domains/ domain1/backups) #glassfishjp
  • 20. #37 Backup and Restore Domain • 自動化は、有償版(Oracle GlassFish Server) に準備されている。 • $ asadmin (create¦delete)-backup-config • $ asadmin (create¦delete)-schedule ※ cron-based schedule • OS版は止める必要があるので自動化の恩恵が 薄い #glassfishjp
  • 21. デプロイ関連Tips #glassfishjp
  • 22. #10 Configure Log4J • Log4Jを全体的に有効にする方法 • $ cp somewhere/log4j.jar glassfish/lib $ cp somewhere/log4j.properties glassfish/domains/domain1/config/ • $ asadmin create-jvm-option - Dlog4j.configuration=file¥¥://$ {com.sun.aas.instanceRoot}/config/ log4j.properties • $ asadmin restart-domain #glassfishjp
  • 23. #10 Configure Log4J • アプリごとに有効にする場合 • $ cp somewhere/log4j.jar WEB-INF/ classes • もしくは ejb-beans.jar の直下に配置する #glassfishjp
  • 24. #19 Application Versioning • アプリケーションのバージョニング。同アプ リの複数のバージョンが同時に起動しないよ うに管理する(upgrade/rollback)。 • $ asadmin deploy --name=AppName:RC1 -- enable=false myApp.war $ asadmin enable AppName:RC1 $ asadmin undeploy AppName:Beta* • $ asadmin deploy --name AppName:RC1 --retire- timeout=3600 myApp.war #glassfishjp
  • 25. #20 Application Scoped Resources • JDBCやResource Adapter、JavaMail等の リソースをアプリケーションスコープで定義し たい場合は、リソース定義をWEB-INF内の glassfish.resources.xmlに記述する。 #glassfishjp
  • 26. #20 Application Scoped Resources • <?xml version="1.0" encoding="UTF-8"?> <resources> <jdbc-resource enabled="true" jndi-name="jdbc/ myDatasource" object-type="user" pool-name="myConnectionPool"> <description/> </jdbc-resource> </resources> • $ asadmin redeploy --properties preserveAppScopedResources=true MyApp.ear #glassfishjp
  • 27. #30 Remote Deployment in NetBeans • リモートサーバを利用した開発方法 • セキュリティの#9で説明したSecure Administrationを有効にする。 • ライブラリとして開発環境にもGlassFishが必要。 • 開発/デプロイ/デバッグは可能。それ以外の機能 (Deploy-on-Save)は利用不可能。 • NetBeansの設定方法は、通常のサーバ登録の最後の ステップで、リモートドメインを登録を選択するだ け。 #glassfishjp
  • 29. #9 Secure Administration • リモート管理権限はデフォルトではオフに なっている • 管理パスワードは以下で変更できる。空パス ワードはダメ。 • $ asadmin change-admin-password #glassfishjp
  • 30. #9 Secure Administration • リモート管理権限、ドメイン内のDASとイン スタンスで相互通信の暗号化を有効にするに は以下の通り(DASとインスタンスを再起動す る必要あり) • $ asadmin enable-secure-admin • 豊富な機能があるので是非 asadmin help enable-secure-admin を読みましょう。 #glassfishjp
  • 31. #9 Secure Administration • Secure Administrationを無効にするには • $ asadmin disable-secure-admin #glassfishjp
  • 32. #11 Using Password Aliases • パスワードの別名(alias)の定義の仕方。 • DB/JMS/etcで使い分ける時に便利。 • <InstallDir>/glassfish/domains/domain1/ config/domain.xml • <property name="password" value="secret_p@assword"/> • この方法は当然ながらべた書きになるので(社 会的に)死ぬときがある #glassfishjp
  • 33. #11 Using Password Aliases • domain.xmlに書く以外には… • $ asadmin create-password-alias DB_password_alias エイリアス・パスワード を入力してください> エイリアス・パスワード をもう一度入力してください> コマンド create-password-alias は正常に実行されました。 #glassfishjp
  • 34. 監視関連Tips #glassfishjp
  • 35. #22 How To Enable Server Monitoring • 監視には結構いいのを揃えている。(CLI, REST, JMX access, Web Console)。 • 監視レベルは、LOW/HIGH/OFFの三つ。 • デフォルトではオフになっているが、再起 動することなくオンにできる。 #glassfishjp
  • 36. #22 How To Enable Server Monitoring • 例:すべての監視データを取得 • $ asadmin get -m "*" $ asadmin get --monitor "*" 報告する監視データがありません。 • 例:Web Container on the DAS を監視 • $ asadmin enable-monitoring --modules web-container=HIGH #glassfishjp
  • 37. #22 How To Enable Server Monitoring • 例:EHB Cointainer on cluster(c1)を監視 • $ asadmin enable-monitoring --target c1 --modules ejb-countainer=LOW #glassfishjp
  • 38. #22 How To Enable Server Monitoring • モジュール名とそれぞれの監視レベルは以下 のコマンドで確認できる • $ asadmin get server.monitoring- service.* server.monitoring-service.dtrace-enabled=false server.monitoring-service.mbean-enabled=true server.monitoring-service.monitoring-enabled=true : • 正直、モジュール名を打つのが面倒なのでGUI(管理コンソール)から やった方が早い。 #glassfishjp
  • 39. #22 How To Enable Server Monitoring #glassfishjp
  • 40. #23 How To View Monitoring Data (CLI) • コマンドラインで監視データを取得する方法 • 監視データは以下によって変更される階層木 構造である。 • どのモジュールがロードされているか • どのモジュールが監視中(monitoring- enabled)になっているか • デプロイされているアプリケーション #glassfishjp
  • 41. #23 How To View Monitoring Data (CLI) • 監視データの例 • server.applications ¦--- application1 ¦ ¦--- ejb-module-1 ¦ ¦ ¦--- ejb1 * ¦ ¦ ¦--- bean-cache (for entity/sfsb) #glassfishjp
  • 42. #23 How To View Monitoring Data (CLI) • 例:JVMのベンダー確認 • $ asadmin get -m "server.jvm.runtime.vmvendor-current- current" • server.jvm.runtime.vmvendor-current- current = Oracle Corporation #glassfishjp
  • 43. #23 How To View Monitoring Data (CLI) • 例:ヒープ使用量 • $ asadmin get -m "server.jvm.memory.usedheapsize*" server.jvm.memory.dotted-name = server.jvm.memory server.jvm.memory.usedheapsize-count-count = 95042176 server.jvm.memory.usedheapsize-count-description = Amount of used memory in bytes server.jvm.memory.usedheapsize-count-lastsampletime = 1355317444825 server.jvm.memory.usedheapsize-count-name = UsedHeapSize server.jvm.memory.usedheapsize-count-starttime = 1355317091175 #glassfishjp
  • 44. #23 How To View Monitoring Data (CLI) • 例:デプロイしているアプリケーションのア クティブセッション数 • $ asadmin get -m "server.applications.mywebapp.server.ac tivesessionscurrent-current" server.applications.mywebapp.server.activesessionscurrent- current = 5 #glassfishjp
  • 45. #24 Using the monitor Command • コマンドによる監視方法 • $ asadmin monitor --interval 5 --type jvm server JVM 監視 UpTime(ミリ秒) ヒープメモリーおよびヒープでないメモリー (バイト) 現在の値 最小 最大 低 高 カウント 1345760 67276800 753860608 0 0 193273856 1350761 67276800 753860608 0 0 193372160 #glassfishjp
  • 46. #24 Using the monitor Command • $ asadmin monitor --interval=5 --type webmodule server asc ast rst st ajlc mjlc tjlc aslc mslc tslc 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 • 各凡例の意味はモニター中に h<Enter> を入 力すると説明が出る。 * ajlc = アクティブな JSP ページの数 * * asc = 現在アクティブなセッションの数 * : • 監視できる項目は asadmin help monitor で 確認しよう! #glassfishjp
  • 47. #24 Using JMX to Access Monitoring • JMXを利用して監視する。 • デプロイしてアクセスするとserver.logに以 下の様なメッセージが現れる。 • JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://192.168.2.102:8686/jndi/ rmi://192.168.2.102:8686/jmxrmi • このURL(service:を含む)を、jconsoleやjvisualvmの Remote Process等に指定するとリアルタイムで監視 することが可能。 #glassfishjp
  • 48. #39 Tracing SQL Queries • 「このSQLを書いたのは誰だあっ!!」を言 うためにログをとる。 • JDBC connection poolで実行されたSQL命 令を追いかける。JPAの使用は問わない。 • javax.enterprise.resource.sqltrace のlog level は FINE(default)。 • org.glassfish.api.jdbc.SQLTraceListenerを 利用して、SQLTraceRecordオブジェクトを 記録するように実装できる。 #glassfishjp
  • 49. #39 Tracing SQL Queries • $ asadmin set server.resources.jdbc- connection-pool.DerbyPool.sql-trace- listeners=MyListener • Query実行時のMethod名などを吐くことが できる。 詳細はAPI参照。 #glassfishjp
  • 50. #39 Tracing SQL Queries • M分間隔で上位N位の高頻度で実行されている SQL命令をレポートする。MとNは以下の通 りに指定する。 • $ asadmin set server.resources.jdbc-connection- pool.<POOL_NAME>.property.time-to-keep-queries-in- minutes=10 • $ asadmin set server.resources.jdbc-connection- pool.<POOL_NAME>.property.number-of-top-queries-to- report=15 #glassfishjp
  • 51. #40 Detecting JDBC statement and connections leaks and reclaim • JDBC statementのタイムアウトとclose漏れ (connection leakage)を検出する • $ asadmin set server.resources.jdbc-connection- pool.DerbyPool.xxx=VALUE • xxx=VALUE : • connection-leak-timeout-in-seconds="10" • statement-timeout-in-seconds="6" • statement-leak-timeout-in-seconds="2" • connection-leak-reclaim= true • statement-leak-reclaim= true #glassfishjp
  • 52. #40 Detecting JDBC statement and connections leaks and reclaim • 設定後、サーバ再起動が必要。close漏れの可能性があ る場合、デプロイ時に以下のようなメッセージが出る • WARNING: A potential statement leak detected for connection pool DerbyPool. The stack trace of the thread is provided below :   com.sun.gjc.spi.base.StatementWrapper. (StatementWrapper.java:81)   :   com.mypackage.MyTestBean.execute(TestBean.java:00) #glassfishjp
  • 53. 更新(Update)関連Tips #glassfishjp
  • 54. #41 Using Update Center to Keep Current • Update Centerを使ってネットワークリポジトリから 更新する • <InstallDir>/bin/pkg • $ pkg list -u で更新保留中のパッケージが解る • $ pkg image-update でGlassFishをアップデー トできる • > You are running on a 64 bit Linux distribution and the 32 bit Linux compatibility libraries do not appear to be installed. • oh... #glassfishjp
  • 55. #41 Using Update Center to Keep Current • pkg のコアな使い方は以下を参照! • http://www.coppermine.jp/docs/programming/ 2012/12/glassfish-internals.html • @btnrougeさんのサイト • Web Profiler, Full Profiler以外の俺俺Profilerも作れる #glassfishjp
  • 56. #42 Update Center GUI Simplifies Updates • シンプルなGUIでUpdate Centerを使える。 • <InstallDir>/bin/updatetool • もしくは、notifierがGlassFishインストー ル時にインストールされる。 #glassfishjp
  • 57. #46 Upgrading to a Newer Version • GlassFishのバージョンの更新方法 • 二通りある • Side-by-side: • <InstallDir>/glassfish/bin/asupgrade --c • Web管理コンソール • In-place: • <InstallDir>/bin/pkg image-update • <InstallDir>/bin/updatetool #glassfishjp
  • 58. #47 Upgrade from Open Source to Commercial • 有料版へ移行する方法 • OS版のリポジトリを削除する • $ pkg unset-publisher dev.glassfish.org stable.glassfish.orag release.javaeesdk.oracle.com • 有料版のリポジトリを追加する • $ pkg set-publisher -P -O http://pkg.oracle.com/ glassfish/v3/release release.glassfish.oracle.com • $ pkg set-publisher -O http://pkg.oracle.com/glassfish/ v3/dev dev.glassfish.oracle.com #glassfishjp
  • 59. #47 Upgrade from Open Source to Commercial • アドオンをインストールする • $ pkg install glassfish-enterprise-(web¦full)-profiler #glassfishjp
  • 60. #48 Extending and Updating Inside a Closed Network • 閉域網での更新方法 • pre-installed toolkit imageとstarter repositoryを インストールする。 • support.oracle.comからリポジトリをDownloadす る(zipファイル) • ローカルリポジトリデーモンを起動する • $ pkg.depotd -d <Directory> -p <Port> • ローカルリポジトリを設定する • $ pkg -R <GlassFish> set-publisher -Pe -O http:// <mylocalhost>:<port> <publisher> #glassfishjp
  • 61. JVM関連Tips #glassfishjp
  • 62. #29 What s in your JVM ? - Troubleshoot • トラブルシュートに役立つあれこれ • Server thread dumpの取り方 • $ asadmin generate-jvm-report --type=thread¦ class¦memory¦summary(default)¦log • 日本語で出てくるのでthreadがおすすめ。 • JVM Command Line Tools • jps / jstack / jstat / jinfo / jmap / jhat • GlassFish関係なかった。 #glassfishjp
  • 63. #44 Controlling the Server's JVM • 起動時、どのようにJVMを選択? 1. domain.xmlの<java-config>に記載された java-home 2. AS_JAVA(glassfish/config/asenv.conf) 3. JAVA_HOME (環境変数) 4. java.home (asadminを実行しているJVM のシステムプロパティ) #glassfishjp
  • 64. #45 Controlling the JVM Options • JVM Optionの設定方法 • domain.xmlの<java-config>は複数箇所で 記述されている(default-config, server- config, cluster1-config)ので猥雑。CLIか ら設定しよう。 • $ asadmin (list¦create¦delete)-jvm- options --target <server,cluser- name,instance-name> <JVM Option> • サーバーの再起動の必要はない。 #glassfishjp
  • 65. その他のTips #glassfishjp
  • 66. #36 GlassFish Hosting Providers • #ステマ #glassfishjp
  • 67. #49 GlassFish Docs • http://docs.oracle.com/cd/E26576_01/index.htm • http://dlc.sun.com.edgesuite.net/glassfish/3.1.2/release/ glassfish-ose-3.1.2-docs-pdf.zip • 日本語の公式サイト (http://glassfish.java.net/ja/)は 古いから気を付けよう! • いまだに2.1.1がトップにある。(そして現 役。) #glassfishjp
  • 68. #50 How to reach us? • GlassFish Forum: • http://www.java.net/forums/glassfish/ glassfish • users@glassfish.java.net #glassfishjp
  • 69. Finish! • Thank You for Listing! #glassfishjp