Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
50 Tips in 50 Minutes for     GlassFish Fans     KUBOTA Yuji (@sugarlife)                                #glassfishjp
29         4050 Tips in 50 Minutes for     GlassFish Fans     KUBOTA Yuji (@sugarlife)                                #gla...
自己紹介• KUBOTA Yuji (@sugarlife) • 難聴者• 通信インフラ系企業 • トラブルシューター / Java EE• JVM (主にGC) 好き                             #glassfishjp
50 Tips in 50 Minutes for GlassFish Fans• JavaOne 2012 Technical Session• 幅広くTipsを紹介し、新しくGlassFishを使う あなたへ「知らなかったけどこれから使える...
29 Tips in 40 Minutes for GlassFish Fans• 29Tips = 50 Tips - いままでに紹介したこと  あるもの - 使わなさそうな機能(クラスタ/  OSGi関連))• GlassFishは開発用か...
管理コンソール関連Tips                #glassfishjp
#1 Using the login Command• リモート管理すると毎回 username/  passwordを聞かれるが、login commandを  使うと格納され、以降はこれを利用して(複数)  サーバにアクセスする場合に回避で...
#2 Use Multimode for Batch Processing• 複数バッチ処理の走らせ方• $ cat ./batchfile.txt  create-cluster c1  create-local-instance --clus...
#3 Use Shell Pipelines With Multimode• シェルスクリプトによる複数処理の走らせ方• $ for i in {1..10}; do  echo "create-local-instance server${i...
#4 Using the AS_DEBUG env Variable• クライアントサイドのデバッグ出力•   コマンドプロセスの詳細を得られる    •   http://localhost:4848/__asadmin/uptime•   ...
#5 The AS_LOGFILE Environment Variable• 動作中の(multimodeも含む)asadminコマン  ド履歴をログファイルに保存する• $ export AS_LOGFILE=/tmp/as.log  $ ...
#8 asadmin Command Help• asadmin はヘルプが充実している• $ asadmin list-commands **********ローカル・コマンド********** backup-domain change-a...
#8 asadmin Command Help• $ asadmin start  コマンドstartが見つかりません。  コマンド名の入力を確認してください。このコマンドは、インストー  ルされていないパッケージによって提供される可能性があり...
#8 asadmin Command Help• $ asadmin help enable-secure-admin  ENABLE-SECURE-ADMI(1) ENABLE-SECURE-ADMI(1)  名前       enable-...
#31 - #34 RESTに関するTips• RESTは蓮沼さんの資料があるのでそちらを!• http://www.slideshare.net/btnrouge/  glassfish-rest                        ...
インストール&セットアップ関連Tips               #glassfishjp
#35 Using Domain Templates• カスタマイズしたドメインを作成するときに  はテンプレートを利用しよう• テンプレートは <InstallDir>/glassfish/lib/  templates/ にある。  $ cd...
#35 Using Domain Templates• $ asadmin verify-domain-xml mynewdomain  テストがすべて成功しました。domain.xmlは有  効です。                     ...
#37 Backup and Restore Domain• ドメインのバックアップ/復元• $ asadmin backup-domain/restore-  domain/list-backups• OSS版はドメイン停止する必要がある。 ...
#37 Backup and Restore Domain• 自動化は、有償版(Oracle GlassFish Server)  に準備されている。• $ asadmin (create¦delete)-backup-config• $ asa...
デプロイ関連Tips             #glassfishjp
#10 Configure Log4J• Log4Jを全体的に有効にする方法 • $ cp somewhere/log4j.jar glassfish/lib    $ cp somewhere/log4j.properties    glassfi...
#10 Configure Log4J• アプリごとに有効にする場合 • $ cp somewhere/log4j.jar WEB-INF/   classes • もしくは ejb-beans.jar の直下に配置する             ...
#19 Application Versioning• アプリケーションのバージョニング。同アプ    リの複数のバージョンが同時に起動しないよ    うに管理する(upgrade/rollback)。•   $ asadmin deploy ...
#20 Application Scoped Resources• JDBCやResource Adapter、JavaMail等の  リソースをアプリケーションスコープで定義し  たい場合は、リソース定義をWEB-INF内の  glassfis...
#20 Application Scoped Resources•   <?xml version="1.0" encoding="UTF-8"?>       <resources>            <jdbc-resource ena...
#30 Remote Deployment in NetBeans•   リモートサーバを利用した開発方法    •   セキュリティの#9で説明したSecure        Administrationを有効にする。    •   ライブラ...
セキュリテリ関連Tips               #glassfishjp
#9 Secure Administration• リモート管理権限はデフォルトではオフに なっている• 管理パスワードは以下で変更できる。空パス ワードはダメ。• $ asadmin change-admin-password        ...
#9 Secure Administration• リモート管理権限、ドメイン内のDASとイン スタンスで相互通信の暗号化を有効にするに は以下の通り(DASとインスタンスを再起動す る必要あり)• $ asadmin enable-secur...
#9 Secure Administration• Secure Administrationを無効にするには • $ asadmin disable-secure-admin                             #glas...
#11 Using Password Aliases• パスワードの別名(alias)の定義の仕方。 • DB/JMS/etcで使い分ける時に便利。• <InstallDir>/glassfish/domains/domain1/  config/...
#11 Using Password Aliases• domain.xmlに書く以外には… • $ asadmin create-password-alias   DB_password_alias   エイリアス・パスワード を入力してくだ...
監視関連Tips           #glassfishjp
#22 How To Enable Server Monitoring• 監視には結構いいのを揃えている。(CLI, REST, JMX access, Web Console)。• 監視レベルは、LOW/HIGH/OFFの三つ。 • デフォル...
#22 How To Enable Server Monitoring• 例:すべての監視データを取得 • $ asadmin get -m "*"   $ asadmin get --monitor "*"   報告する監視データがありません...
#22 How To Enable Server Monitoring• 例:EHB Cointainer on cluster(c1)を監視 • $ asadmin enable-monitoring --target   c1 --modu...
#22 How To Enable Server Monitoring• モジュール名とそれぞれの監視レベルは以下    のコマンドで確認できる    • $ asadmin get server.monitoring-      servic...
#22 How To Enable Server Monitoring                               #glassfishjp
#23 How To View Monitoring Data (CLI)• コマンドラインで監視データを取得する方法• 監視データは以下によって変更される階層木 構造である。• どのモジュールがロードされているか• どのモジュールが監視中(m...
#23 How To View Monitoring Data (CLI)• 監視データの例•     server.applications                  ¦--- application1                ...
#23 How To View Monitoring Data (CLI)• 例:JVMのベンダー確認 • $ asadmin get -m   "server.jvm.runtime.vmvendor-current-   current" ...
#23 How To View Monitoring Data (CLI)• 例:ヒープ使用量 • $ asadmin get -m   "server.jvm.memory.usedheapsize*"   server.jvm.memory...
#23 How To View Monitoring Data (CLI)• 例:デプロイしているアプリケーションのア クティブセッション数• $ asadmin get -m  "server.applications.mywebapp.se...
#24 Using the monitor Command• コマンドによる監視方法• $ asadmin monitor --interval 5 --type jvm  server                  JVM 監視   Up...
#24 Using the monitor Command• $ asadmin monitor --interval=5 --type  webmodule server   asc ast rst st ajlc mjlc tjlc asl...
#24 Using JMX to Access Monitoring• JMXを利用して監視する。 • デプロイしてアクセスするとserver.logに以     下の様なメッセージが現れる。     •   JMXStartupService...
#39 Tracing SQL Queries• 「このSQLを書いたのは誰だあっ!!」を言  うためにログをとる。• JDBC connection poolで実行されたSQL命  令を追いかける。JPAの使用は問わない。• javax.en...
#39 Tracing SQL Queries• $ asadmin set server.resources.jdbc-  connection-pool.DerbyPool.sql-trace-  listeners=MyListener•...
#39 Tracing SQL Queries• M分間隔で上位N位の高頻度で実行されている SQL命令をレポートする。MとNは以下の通 りに指定する。•   $ asadmin set server.resources.jdbc-connec...
#40 Detecting JDBC statement and        connections leaks and reclaim•   JDBC statementのタイムアウトとclose漏れ    (connection leak...
#40 Detecting JDBC statement and       connections leaks and reclaim•   設定後、サーバ再起動が必要。close漏れの可能性があ    る場合、デプロイ時に以下のようなメッセ...
更新(Update)関連Tips                   #glassfishjp
#41 Using Update Center to Keep Current•   Update Centerを使ってネットワークリポジトリから    更新する    •   <InstallDir>/bin/pkg        •   $...
#41 Using Update Center to Keep Current•   pkg のコアな使い方は以下を参照!    •   http://www.coppermine.jp/docs/programming/        201...
#42 Update Center GUI Simplifies Updates• シンプルなGUIでUpdate Centerを使える。 • <InstallDir>/bin/updatetool • もしくは、notifierがGlassFis...
#46 Upgrading to a Newer Version• GlassFishのバージョンの更新方法•   二通りある    •   Side-by-side:        •   <InstallDir>/glassfish/bin/...
#47 Upgrade from Open Source to            Commercial• 有料版へ移行する方法 • OS版のリポジトリを削除する  •   $ pkg unset-publisher dev.glassfish...
#47 Upgrade from Open Source to           Commercial• アドオンをインストールする •   $ pkg install glassfish-enterprise-(web¦full)-profil...
#48 Extending and Updating Inside a Closed                Network• 閉域網での更新方法    •   pre-installed toolkit imageとstarter re...
JVM関連Tips            #glassfishjp
#29 What s in your JVM ? - Troubleshoot• トラブルシュートに役立つあれこれ• Server thread dumpの取り方 •   $ asadmin generate-jvm-report --type...
#44 Controlling the Servers JVM• 起動時、どのようにJVMを選択? 1. domain.xmlの<java-config>に記載された java-home 2. AS_JAVA(glassfish/config/ase...
#45 Controlling the JVM Options• JVM Optionの設定方法 • domain.xmlの<java-config>は複数箇所で   記述されている(default-config, server-   config,...
その他の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/rel...
#50 How to reach us?• GlassFish Forum: • http://www.java.net/forums/glassfish/    glassfish• users@glassfish.java.net        ...
Finish!• Thank You for Listing!                           #glassfishjp
Upcoming SlideShare
Loading in …5
×

29 Tips in 40 Minitues for GlassFish Fans #glassfishjp

2,196 views

Published on

29 Tips in 40 Minitues for GlassFish Fans #glassfishjp

GlassFish Users Group Japan 勉強会 Winter 2012 w/大忘年会
http://atnd.org/events/32722

Published in: Technology
  • Be the first to comment

29 Tips in 40 Minitues for GlassFish Fans #glassfishjp

  1. 1. 50 Tips in 50 Minutes for GlassFish Fans KUBOTA Yuji (@sugarlife) #glassfishjp
  2. 2. 29 4050 Tips in 50 Minutes for GlassFish Fans KUBOTA Yuji (@sugarlife) #glassfishjp
  3. 3. 自己紹介• KUBOTA Yuji (@sugarlife) • 難聴者• 通信インフラ系企業 • トラブルシューター / Java EE• JVM (主にGC) 好き #glassfishjp
  4. 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. 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
  6. 6. 管理コンソール関連Tips #glassfishjp
  7. 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. 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. 9. #3 Use Shell Pipelines With Multimode• シェルスクリプトによる複数処理の走らせ方• $ for i in {1..10}; do  echo "create-local-instance server${i}"; done ¦ asadmin #glassfishjp
  10. 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. 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. 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. 13. #8 asadmin Command Help• $ asadmin start コマンドstartが見つかりません。 コマンド名の入力を確認してください。このコマンドは、インストー ルされていないパッケージによって提供される可能性があります。 最も一致するローカルおよびリモート・コマンド: restart-domain restart-instance restart-local-instance start-cluster : #glassfishjp
  14. 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. 15. #31 - #34 RESTに関するTips• RESTは蓮沼さんの資料があるのでそちらを!• http://www.slideshare.net/btnrouge/ glassfish-rest #glassfishjp
  16. 16. インストール&セットアップ関連Tips #glassfishjp
  17. 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. 18. #35 Using Domain Templates• $ asadmin verify-domain-xml mynewdomain テストがすべて成功しました。domain.xmlは有 効です。 #glassfishjp
  19. 19. #37 Backup and Restore Domain• ドメインのバックアップ/復元• $ asadmin backup-domain/restore- domain/list-backups• OSS版はドメイン停止する必要がある。 Oracle版はsuspend-domainコマンドで一時 停止させる必要がある。• バックアップの削除は保存しているファイル を消す。(デフォルトはglassfish/domains/ domain1/backups) #glassfishjp
  20. 20. #37 Backup and Restore Domain• 自動化は、有償版(Oracle GlassFish Server) に準備されている。• $ asadmin (create¦delete)-backup-config• $ asadmin (create¦delete)-schedule ※ cron-based schedule• OS版は止める必要があるので自動化の恩恵が 薄い #glassfishjp
  21. 21. デプロイ関連Tips #glassfishjp
  22. 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. 23. #10 Configure Log4J• アプリごとに有効にする場合 • $ cp somewhere/log4j.jar WEB-INF/ classes • もしくは ejb-beans.jar の直下に配置する #glassfishjp
  24. 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. 25. #20 Application Scoped Resources• JDBCやResource Adapter、JavaMail等の リソースをアプリケーションスコープで定義し たい場合は、リソース定義をWEB-INF内の glassfish.resources.xmlに記述する。 #glassfishjp
  26. 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. 27. #30 Remote Deployment in NetBeans• リモートサーバを利用した開発方法 • セキュリティの#9で説明したSecure Administrationを有効にする。 • ライブラリとして開発環境にもGlassFishが必要。 • 開発/デプロイ/デバッグは可能。それ以外の機能 (Deploy-on-Save)は利用不可能。 • NetBeansの設定方法は、通常のサーバ登録の最後の ステップで、リモートドメインを登録を選択するだ け。 #glassfishjp
  28. 28. セキュリテリ関連Tips #glassfishjp
  29. 29. #9 Secure Administration• リモート管理権限はデフォルトではオフに なっている• 管理パスワードは以下で変更できる。空パス ワードはダメ。• $ asadmin change-admin-password #glassfishjp
  30. 30. #9 Secure Administration• リモート管理権限、ドメイン内のDASとイン スタンスで相互通信の暗号化を有効にするに は以下の通り(DASとインスタンスを再起動す る必要あり)• $ asadmin enable-secure-admin • 豊富な機能があるので是非 asadmin help enable-secure-admin を読みましょう。 #glassfishjp
  31. 31. #9 Secure Administration• Secure Administrationを無効にするには • $ asadmin disable-secure-admin #glassfishjp
  32. 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. 33. #11 Using Password Aliases• domain.xmlに書く以外には… • $ asadmin create-password-alias DB_password_alias エイリアス・パスワード を入力してください> エイリアス・パスワード をもう一度入力してください> コマンド create-password-alias は正常に実行されました。 #glassfishjp
  34. 34. 監視関連Tips #glassfishjp
  35. 35. #22 How To Enable Server Monitoring• 監視には結構いいのを揃えている。(CLI, REST, JMX access, Web Console)。• 監視レベルは、LOW/HIGH/OFFの三つ。 • デフォルトではオフになっているが、再起 動することなくオンにできる。 #glassfishjp
  36. 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. 37. #22 How To Enable Server Monitoring• 例:EHB Cointainer on cluster(c1)を監視 • $ asadmin enable-monitoring --target c1 --modules ejb-countainer=LOW #glassfishjp
  38. 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. 39. #22 How To Enable Server Monitoring #glassfishjp
  40. 40. #23 How To View Monitoring Data (CLI)• コマンドラインで監視データを取得する方法• 監視データは以下によって変更される階層木 構造である。• どのモジュールがロードされているか• どのモジュールが監視中(monitoring- enabled)になっているか• デプロイされているアプリケーション #glassfishjp
  41. 41. #23 How To View Monitoring Data (CLI)• 監視データの例• server.applications ¦--- application1 ¦ ¦--- ejb-module-1 ¦ ¦ ¦--- ejb1 * ¦ ¦ ¦--- bean-cache (for entity/sfsb) #glassfishjp
  42. 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. 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. 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. 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. 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. 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. 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. 49. #39 Tracing SQL Queries• $ asadmin set server.resources.jdbc- connection-pool.DerbyPool.sql-trace- listeners=MyListener• Query実行時のMethod名などを吐くことが できる。 詳細はAPI参照。 #glassfishjp
  50. 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. 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. 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. 53. 更新(Update)関連Tips #glassfishjp
  54. 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. 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. 56. #42 Update Center GUI Simplifies Updates• シンプルなGUIでUpdate Centerを使える。 • <InstallDir>/bin/updatetool • もしくは、notifierがGlassFishインストー ル時にインストールされる。 #glassfishjp
  57. 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. 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. 59. #47 Upgrade from Open Source to Commercial• アドオンをインストールする • $ pkg install glassfish-enterprise-(web¦full)-profiler #glassfishjp
  60. 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. 61. JVM関連Tips #glassfishjp
  62. 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. 63. #44 Controlling the Servers 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. 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. 65. その他のTips #glassfishjp
  66. 66. #36 GlassFish Hosting Providers • #ステマ #glassfishjp
  67. 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. 68. #50 How to reach us?• GlassFish Forum: • http://www.java.net/forums/glassfish/ glassfish• users@glassfish.java.net #glassfishjp
  69. 69. Finish!• Thank You for Listing! #glassfishjp

×