Androidアプリ開発 – Hello Worldまでがんばる
今年も新人研修をやるかもしれない。去年はSolrを使って検索アプリを作ってもらったのだけれど、今年はAndroidアプリを作ってもらおうかと思っている。
やろうやろうとおもってやってなかったAndroidアプリの開発なので、勉強がてらにまとめてみる。
DAOとかDTOとかVOとかEntityとか
SAStrutsを学ぶ – まずはS2Junit4でServiceをUnitテスト
藤原のようなStruts1.xを使っていた世代は、DIを覚えなきゃやばいと感じたので、SAStrutsを勉強している。
どうも、最近のJavaフレームワークをみていると、Struts2は死にかけていて、スタンダートとしてSpring。国内なら国産のSeaserみたい。Google Guiceも、生まれたてなのに結構奮闘している。
まずはSAStrutsをと思い、その中でも業務にかかわってきそうなUnitテストの動きを調べてみる。
テストネタ
まずは、1分でWebアプリを作れるEclipseプラグイン「Dolteng」を読みながら、H2データベースを使って、実際にSAStrutsを動かしてみる。
ここで自動作成されたクラスはAction、Service、Entity、Formとあり、DB接続やWeb画面まであるので、これらに対して単体テストをおこなってみる。
単体テストを作ってみる
S2JUnit4のページを読んだが、すんなりできなかった部分があったので、自分のやった手順をまとめる。
まず、1分でWebアプリを作れるEclipseプラグイン「Dolteng」ではDeptというテーブルとEmpというテーブルがありそれぞれにサンプルデータが少し入っている。今回はDeptServiceのクラスを作る。このクラスはfindByIdでIDに紐づいたデータを取ってくるServiceクラス。
まず、s2junit4pluginのページを参考にテストケースクラスとdiconファイルを作成する。テストケースクラスである「DeptServiceTest 」にはテストを実装する。
package com.daipresents.sastruts.service; import static org.junit.Assert.assertNull; import static org.seasar.framework.unit.S2Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.seasar.framework.unit.Seasar2; import org.seasar.framework.unit.TestContext; import com.daipresents.sastruts.entity.Dept; @RunWith(Seasar2.class) public class DeptServiceTest { private TestContext ctx; private DeptService deptService; /** * {@link com.daipresents.sastruts.service.DeptService#findById(java.lang.Long)} のためのテスト・メソッド。 */ @Test public void testFindById() { Dept dept = deptService.findById(new Long(90000)); assertNull(ctx.getTestMethodName() + “:データが存在しない場合”, dept); dept = deptService.findById(new Long(90001)); assertEquals(ctx.getTestMethodName() + “:データが存在する場合”, ctx.getExpected(), dept); } }
diconは何も書かなくてよかった。
<?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE components PUBLIC “-//SEASAR//DTD S2Container 2.4//EN” “http://www.seasar.org/dtd/components24.dtd”> <components></components>
ただ、「<include path=”app.dicon”/>」を書かないとS2JDBC + S2JUnit4でハマると同じ現象がでたんだけど気のせいかもしれない。Seasar S2JUnit4 – @//メモでは書いてあるんだけど、消しても動いてしまった。
「src/test/resources/s2junit4.dicon」に
<component class=”org.seasar.framework.unit.impl.ConfigFileIncluderImpl”> <initMethod name=”addConfigFile”> <arg>”app.dicon”</arg> </initMethod> <initMethod name=”addConfigFile”> <arg>context.testClassShortName + [...]
S2Junit4で「JUnitテストケースを選択してください」と怒られる
S2JUnitで、SAStrutsのサンプルをテストしようと思ったんだけど、実行時に
JUnitテストケースを選択してください
と怒られる。
S2Junit4Pluginのバグみたいで、SeaserのJIRAにも問題としてあがっているが、2008/12/17に作成されてOpenでUnassignedなので、まだなおってないみたい。
つくば日記 (仮)で作者が「ショートカットなら動く」といってるが「Ctrl+0」を押しても動かない。
もっと詳しく言うと、Eclipseで対象のテストクラスを開いて、そのクラスのWindowをアクティブにしてショートカットを押さないと動かない。
いつも、エクスプローラから右クリックして動かしているのでこれになかなか気がつかなかった。
Javaで実装されたHTMLパーサの性能や使い勝手を比べてみるよん
XSS対策として入力値チェックライブラリを考えているんですが、入力値としてHTMLを許可する場合、これを解析してなんとかならんもんかと思ってたりします。
XMLスキーマとかも使えそうなもんですが、柔軟になる分、ユーザはXMLスキーマの書き方を覚えなければならないわけで、いろんなチェックを、フィルタを通すように使える設計で作っておいて、「IE8がでたー!」となったときでも「IE8Filter」を追加で作って、フィルタに追加するだけー・・・とかにしようかと。
調べてみると、いがぴょんさんのJavaで実装された HTML Parser (HTMLパーサ) を調べてみましたがとても素敵です。これにパフォーマンスとか、使い勝手を加えてまとめてみます。
今回、Google先生や、いがぴょんさんも言及しているOpen Source HTML Parsers in Javaから、以下を調査対象とした。結果はそれぞれまとめていき、結果はまとめページに載せる予定です。
名前 URL 調査結果 HTML Parser http://htmlparser.sourceforge.net/ Maybe Comming Soon. Jericho HTML Parser http://jericho.htmlparser.net/docs/index.html Maybe Comming Soon. javax.swing.text.html.parser.Parser http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/swing/text/html/parser/Parser.html Maybe Comming Soon. Java Mozilla Html Parser http://mozillaparser.sourceforge.net/ Maybe Comming Soon. CyberNeko HTML Parser http://sourceforge.net/projects/nekohtml/ Maybe Comming Soon. JTidy http://sourceforge.net/projects/jtidy/ Maybe Comming Soon. The Validator.nu HTML Parser http://about.validator.nu/htmlparser/ Maybe Comming Soon. TagSoup http://mercury.ccil.org/~cowan/XML/tagsoup/ Maybe Comming Soon. HotSAX http://hotsax.sourceforge.net/ Maybe Comming Soon. Cobra: Java HTML Renderer & Parser http://lobobrowser.org/cobra.jsp Maybe Comming Soon. HtmlCleaner http://htmlcleaner.sourceforge.net/ Maybe Comming [...]
commons-loggingとSLF4jのパフォーマンス比較
前回、log4jとlogbackのパフォーマンス比較では、Loggerの実装を比較したんだけど、commons-loggingやSLF4jのようなLoggerのFacadeの比較もやらなきゃなーとおもったので、パフォーマンスを調べてみた。
以下のケースで実験。
commons-logging + log4j SLF4J + log4j
条件は以下。
CPU:Core 2 Duo T8100 2.1GHz Memory:2G PC:藤原のDellラップトップ Eclipse Ganymedeから実行 1回のテストで100万行出力。これを3回連続で実施。 ログ出力のフォーマットは同じ(文字数もそろえた) ログ出力開始から終了までの秒数を測定
ソースコードは以下のような感じ。Loggerを差し替えて実施している。
private static final Log logger = LogFactory.getLog(CommonsLoggingPerformanceTest.class); public static void main(String[] args) { long start = System.currentTimeMillis(); int cnt = 1000; for (int i = 0; i < cnt; i++) { for (int j = 0; j < cnt; j++) { logger.debug("fujihara."); } } long end = System.currentTimeMillis(); logger.debug("total:" + String.valueOf((end -start) / 1000)); }
結果は以下。
// 1回目 2009-07-20 14:35:10,182 DEBUG com.daipresents.logging.facade.test.CommonsLoggingPerformanceTest – total:89 // 2回目 2009-07-20 14:40:15,918 DEBUG com.daipresents.logging.facade.test.CommonsLoggingPerformanceTest – total:86 // 3回目 2009-07-20 14:42:04,358 DEBUG com.daipresents.logging.facade.test.CommonsLoggingPerformanceTest – total:91
Ave 88.66秒。
// 1回目 2009-07-20 14:44:26,058 [...]
GlassFish v2.1の監視用カスタムMBean一式を作ってみた
GlassFishサブスクリプションのPerformance Advisorには以下の項目がある。
物理メモリーに関する警告 メモリリークに関する警告 CPU使用量の傾向に関する警告 スループットに関する警告 GC停止時間に関する警告 ログエントリに関する警告
それぞれの項目がやっていることがよくわからないけど、結局、「java.lang.management」パッケージでとれる値をとっていると推測できるので、推測になるが自前で作ってみた。
概要
version 0.2.0(2009/03/15 release)の情報。最新はGoogleCodeのソースを読んで・・・。
以下の監視用カスタムMBeanを作った。
物理メモリー、スワップメモリー空き領域、CPU時間を監視できるOSMonitor スレッド数を監視できるThreadMonitor ヒープ、非ヒープメモリを監視できるMemoryMonitor GC実行後のメモリ量を監視できるGCMonitor
対するアクションは以下。
なにもしないDummyAction ログを出すLoggingAction メールを送信するEmailAction
Loggerはlog4j 1.2.15を使っている。GF_ROOT/libとかにlog4jのjarをおいてもいいんだけど、全体に影響が出るのが嫌だったので、log4jのソースを一緒にコンパイルしてgfmon.jarに含めている。log4jの設定はgfmon.jarをアンパックして、log4j.xmlを修正して、パックしてください。
課題点は以下。
GCの監視をもうちょっといい方法とかないかな GC停止時間ってどうやってとってんだろ? スループットの定義は何だ? メモリリークの定義は何だ? コメントを書いていない
ダウンロード
ダウンロードはこちらから。 名前はgfmonです。
ソースはGoogleCodeにおいてます。
MBean
MBeanごとに監視できる属性がことなるので、自分が監視したい属性を見つけて、管理ルールに登録する。参考は
管理ルールの登録方法。
イベントタイプはmonitorになります。
監視対象の属性がLoggingの場合
定期的に監視している属性の値をとりたかったので、全部のMBeanでLoggingという属性を監視できるようにしている。
この属性を監視対象の属性に設定すると、内部でそのMBeanで監視できる項目すべての値を、ログに出力する。
この属性の戻り値は「success」という文字列なので、監視タイプをString、トリガーをEquals、値をsuccessにすれば、粒度周期で設定した周期でログを出力してくれるようになる。(小細工ですね)
監視する属性にLoggerを選択したときはActionが必要ないと思いますので、何もしないDummyActionを設定すればいい。
ログはこんな感じになる。
2009-03-15 22:59:39,308,INFO,HeapMemoryUsage:17,NonHeapMemoryUsage:30 2009-03-15 22:59:39,323,INFO,CurrentThreadUserTime:0,CurrentThreadCpuTime:0,DaemonThreadCount:53,PeakThreadCount:74,ThreadCount:67 2009-03-15 22:59:40,836,INFO,CopyDuration:19,MarkSweepCompactDuration:768,CopyGCMemoryCutDown:-4,MarkSweepCompactCutDownInPercent:-3 2009-03-15 22:59:43,067,INFO,ProcessCpuTime:165969463900,FreePhysicalMemoryInPercent:35,FreeSwapSpaceSizeInPercent:17,SystemLoadAverage:-1.0 MBeanの登録方法
登録方法はGlassFish v2.1のOS監視用カスタムMBeanを作るを参考に。
登録時に入力する値を以下にまとめておく。
OSMonitor
実装クラス名
com.daipresents.gfmon.OSMonitor
名前
OSMonitor
監視対象のMBean
user:impl-class-name=com.daipresents.gfmon.OSMonitor,name=OSMonitor,server=server
監視対象の属性
Logging
ProcessCpuTime
FreePhysicalMemoryInPercent
FreeSwapSpaceSizeInPercent
SystemLoadAverage
ThreadMonitor
実装クラス名
com.daipresents.gfmon.ThreadMonitor
名前
ThreadMonitor
監視対象のMBean
user:impl-class-name=com.daipresents.gfmon.ThreadMonitor,name=ThreadMonitor,server=server
監視対象の属性
Logging
CurrentThreadUserTime
CurrentThreadCpuTime
DaemonThreadCount
PeakThreadCount
ThreadCount
MemoryMonitor
実装クラス名
com.daipresents.gfmon.MemoryMonitor
名前
MemoryMonitor
監視対象のMBean
user:impl-class-name=com.daipresents.gfmon.MemoryMonitor,name=MemoryMonitor,server=server
監視対象の属性
Logging
HeapMemoryUsageInPercent
GlassFish v2.1 管理ルールの監視タイプメモ
管理ルールで設定できる監視タイプは3つ。
監視する値の種類によって使い分けることができそう。
カウンタ
監視する値が徐々に増える値の場合に使えそう。初期値からモジュラスで設定したXだけ増、さらにXだけ増となったら・・・のような設定ができる。
ゲージ
文字列
GlassFish v2.1で閾値をこえたらログを出す管理ルールを作る
GlassFish Performance Advisor 的なもの、自作しよう、その 2を参考に。
会社でやったときはうんともすんとも動かなかったので、おぎのさんの例を参考に進める。
GlassFish v2.1のOS監視用カスタムMBeanを作るで作ったOSMonitorを監視して、閾値を超えたらログを出力させてみる。
MBeanインタフェース作成
とりあえずこれはいるみたい。IF名の最後をMBeanにすること。
package com.daipresents.gfmon.action; public interface LoggingActionMBean { } Action作成
上で作ったMBeanインタフェースと、NotificationListenerという通知を受信するためのIFを実装する。
handleNotificationというメソッドがあれば、監視されるMBeanではなく、Actionを実行するMBeanと認識しているみたい。
今回はログを出すだけにしているが、閾値を上回ったり下回ったりしたときにActionを変えることもできる。
package com.daipresents.gfmon.action; import javax.management.Notification; import javax.management.NotificationListener; import javax.management.monitor.MonitorNotification; import org.apache.log4j.Logger; public class LoggingAction implements NotificationListener, LoggingActionMBean { private Logger logger = Logger.getLogger(LoggingAction.class); public LoggingAction(){ } public void handleNotification(Notification notification, Object handback) { String observedAttribute = ((MonitorNotification) notification).getObservedAttribute(); String notificationMessage; if (notification.getType().equals(MonitorNotification.THRESHOLD_HIGH_VALUE_EXCEEDED)) { notificationMessage = observedAttribute + ” exceeded high threshold.”; } else { notificationMessage = observedAttribute + ” exceeded low threshold.”; } logger.info(“NOTIFICATION:” + notificationMessage); } } GlassFishへ登録
カスタムMBeanを配備。
実装したActionであるLoggingActionを入力する。
GlassFish v2.1の起動時にCannot bind to URL
GlassFishを起動しなおすと以下のエラーが出た。
[#|2009-03-15T13:59:00.559+0900|SEVERE|sun-appserver2.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;[email protected];com.sun.appserv.server.ServerLifecycleException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested exception is: java.net.ConnectException: Connection refused: connect];_RequestID=281d7895-15b0-44de-b300-552afc58918b;|Service [email protected] cannot be started! : com.sun.appserv.server.ServerLifecycleException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested exception is: java.net.ConnectException: Connection refused: connect]|#] [#|2009-03-15T13:59:00.559+0900|SEVERE|sun-appserver2.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;_RequestID=281d7895-15b0-44de-b300-552afc58918b;|CORE5071: 初期化中にエラーが発生しました com.sun.appserv.server.ServerLifecycleException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 192.168.0.2; nested exception is: java.net.ConnectException: Connection refused: connect] at com.sun.enterprise.admin.server.core.JmxConnectorLifecycle.onStartup(JmxConnectorLifecycle.java:153) at com.sun.enterprise.server.ApplicationServer.onStartup(ApplicationServer.java:446) at com.sun.enterprise.server.ondemand.OnDemandServer.onStartup(OnDemandServer.java:134) at com.sun.enterprise.server.PEMain.run(PEMain.java:409) at com.sun.enterprise.server.PEMain.main(PEMain.java:336) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.enterprise.server.PELaunch.main(PELaunch.java:415) Caused by: java.io.IOException: Cannot bind to URL [rmi://192.168.0.2:8686/management/rmi-jmx-connector]: javax.naming.ServiceUnavailableException [Root exception is [...]
GlassFish v2.1のOS監視用カスタムMBeanを作る
楽天でのGlassFishの運用 by
寺田 佳央 (Yoshio Terada)てので、楽天のエンジニアのインタビューが。
そこでも監視のことをが書かれている。
それがまさにわたしたちの欲しいものです。 ・・・中略・・・ アプリケーションサーバの何を監視すべきかなどの提案。
運用監視について、サブスクリプションを購入しない場合は、自分で考えなければならない。なければ作ればいいじゃない!か。
ちょうど、GlassFish Performance Advisor 的なもの、自作しようが昨日書かれていた!
これを参考に作ってみましょう。
その他参考になったサイト GlassFish Project – Self Management – Example rule and related code Using Custom MBeans to Extend the GlassFish Administration System
MBeanインタフェースの実装
インタフェースは必ず最後がMBeanにならないとだめ。?MXBeanでも登録はできたのでOKかも。
package com.daipresents.gfmon; public interface OSMonitorMBean { public double getSystemLoadAverage(); public int getFreePhysicalMemoryInPercent(); public int getFreeSwapSpaceSizeInPercent(); }
おぎのさんのサンプルに合わせてcom.sun.management.OperatingSystemMXBeanでとれる値を定義。
カスタムMBeanの実装
作ったIFを実装する。注意しないといけないのがクラスの名前。OSMonitorMBeanというIFだからOSMonitorMBeanImplとかにしたら、以下のように怒られる。
MBean class com.daipresents.gfmon.OSMBeanImpl does not implement DynamicMBean, neither follows the Standard MBean conventions (javax.management.NotCompliantMBeanException: Class com.daipresents.gfmon.OSMBeanImpl is not a JMX compliant Standard MBean) nor the MXBean conventions (javax.management.NotCompliantMBeanException: com.daipresents.gfmon.OSMBeanImpl: Class com.daipresents.gfmon.OSMBeanImpl is not a JMX compliant MXBean)
クラス名にMBeanが入るとだめなのか?これでかなりの時間はまることに。
下のように、実装したクラスでは、メモリの利用量を計算している。IFを作らずにいきなり「OperatingSystemMXBean」をimplementsしても動いた。
package com.daipresents.gfmon; import java.lang.management.ManagementFactory; [...]
GlassFish v2.1でVista上にクラスタ環境が作れない
GlassFish v2.1をWindows Vistaにインストールでは単一インスタンスでインストールしたんだけど、実はクラスタ構成を試すつもりだった。
しかし、うまくいかなかった。。。
以下はその時のログ。
ノードエージェントとクラスタの作成
setup-cluster.xmlを使ってビルドする。
cd c:\fujihara c:\fujihara>java -Xmx256m -jar glassfish-installer-v2.1-b60e-windows-ml.jar c:\fujihara>ren glassfish glassfish-v21 c:\fujihara>cd glassfish-v21 c:\fujihara\glassfish-v21>lib\ant\bin\ant -f setup-cluster.xml
参考:今日のひとこと クラスタ関連のまとめ
ノードエージェント作成。
c:\fujihara\glassfish-v21>asadmin create-node-agent –host localhost –port 4848 –user admin local-agent コマンド create-node-agent は正常に実行されました。 c:\fujihara\glassfish-v21>asadmin start-node-agent local-agent マスターパスワードを入力してください [デフォルトを使用する場合は Enter キー]:> 出力を C:/fujihara/glassfish-v21/nodeagents/local-agent/agent/logs/server.log にリダイレクトしています アプリケーション出力を C:/fujihara/glassfish-v21/nodeagents/local-agent/agent/logs/server.log にリダイレクトします コマンド start-node-agent は正常に実行されました。
ホスト名が文字化けしたのでノードエージェント>local-agent>JMXでホスト名に「localhost」を入れた。
一旦、ノードエージェントを止める。
asadmin stop-node-agent local-agent
クラスタ作成。
c:\fujihara\glassfish-v21>asadmin create-cluster –host localhost –port 4848 local-cluster コマンド create-cluster は正常に実行されました。
インスタンス作成。
c:\fujihara\glassfish-v21>asadmin create-instance –host localhost –port 4848 –nodeagent local-agent –cluster local-cluster instance1 コマンド create-instance は正常に実行されました。 c:\fujihara\glassfish-v21>asadmin create-instance –host localhost –port 4848 –nodeagent local-agent –cluster local-cluster instance instance2 HTTP_LISTENER_PORT の代わりに 38,081 を使用します。 HTTP_SSL_LISTENER_PORT の代わりに 38,182 を使用します。 IIOP_SSL_LISTENER_PORT [...]
GlassFish v2.1をWindows Vistaにインストール
Windows Vista環境にGlassFish v2.1ファイナルビルドをインストールしてみる。インストールした場所は「c:\fujihara」。
インストールから起動まで
GlassFish のアンバンドルと設定方法を見ながら以下のコマンドを実行。
cd c:\fujihara c:\fujihara>java -Xmx256m -jar glassfish-installer-v2.1-b60e-windows-ml.jar c:\fujihara>ren glassfish glassfish-v21 c:\fujihara>cd glassfish-v21 c:\fujihara\glassfish-v21>lib\ant\bin\ant -f setup.xml
ビルドはこれで完了。次にGlassFish クイックスタートガイドを見ながら単一インスタンスモードで起動。
まず「install-dir/bin」 ディレクトリを PATH 環境変数に追加。そして起動。
c:\fujihara\glassfish-v21>asadmin start-domain domain1
「http://localhost:8080/」にアクセスして起動を確認。
GlassFishの運用監視ってみんなどうやってんの?
GlassFish V2 UR2のSystem Application Server Admin Consoleでもちらりと書いたんだけど、GlassFishの管理画面はすげーいい。
でも、監視とかそういうものはちょっと足りない感がある。
そろそろ使われるようになってきたのかと、ちょっと調べてみたら、「GlassFish Enterprise Manager」たるものがキーワードといてひっかかる。
Sunが打ち出す主要OSSポートフォリオ”GlassFish”の新戦略 by マイコミジャーナルでは以下のように説明されている。
GlassFsih Enterprise Server v2.1(以下、GlassFish ES)は、GlassFish v2系列の最新のリリースをベースにSunによるサポートを追加したアプリケーションサーバ。
OSSのGlassFishのSun製品(有償)のSun Java System Application Serverの後継らしい。
このGlassFish ESには「付加機能としてサブスクライバのみに提供される」以下のパッケージがあるらしい。(リンク先はすべてogino’s blogさん)
Performance Advisor Performance Monitor SNMP Monitor Performance Advisor
Performance Advisorは管理コンソールへのプラグイン。
Performance Advisor サーバチューニング支援では、サーバのCPU数、メモリ量を入れると、最適な設定を教えてくれるツール。
WebLogicとかはドキュメント見ながら最適な値を探したりしたけど、こういうのってサービスの種類によって似通っているので、こういうのがあればいいガイドラインになりそう。
Performance Advisor サーバ監視では、「なんかあったらなんかする」もの。以下のようなことができるらしい。
物理メモリーに関する警告 メモリリークに関する警告 CPU使用量の傾向に関する警告 スループットに関する警告 GC停止時間に関する警告 ログエントリに関する警告
「なんかあったら」がこれになる。「なんかする」はログ出力やメール送信になるらしい。
このサーバ監視はまさに欲しい機能(でも有償・・・)。
Performance Monitor
Performance MonitorはVisualVM ベースのスタンダロンアプリケーション。JDKのVisualVMより高機能というのが売り。これだと簡単にグラフィカルに監視できる。
多分、これは、過去どこまでもさかのぼれるものではなく、このツールを開いてからの状況になるのかなー。また、ここでも監視の設定を「High」とかにできるなら、Performance Advisorと一緒にできるのでは・・・。
SNMP Monitoring
SNMP Monitoringはwarファイルでデプロイして使うらしい。
これでは、
GlassFish インスタンスの様々な情報を SNMP で取得することができるようになります。
らしい。
その他
「Java SE 6完全攻略」第3回 jconsoleの機能向上 by ITProのように、JMXやjconsoleでも確認できる。
まとめ
有償でいいなら結構なものがある。
しかし、それ以外は自分で実装するか、jconsoleやVisualVMとかを使うしかないようだ。
僕について
Dai Fujihara
A hero can be anyone.
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
ここ最近の人気
永久保存の本
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ










