JavaのWebアプリケーション開発フレームワークによる、Webサイト開発の顛末記です。

EclipseのMavenを使った、Spring-MVC、Thymeleaf、MyBatis 等のプログラミングテクニックを、
備忘録的に記録しています。実際に動くソースコードを多用して説明していますので、
これからEclipseや、Spring-MVCを始めたいと思っている人にとって、少しでも参考になれば幸いです。
■応用の森 CPU使用率推移グラフ 実行クラス
1)コントローラ
まず、コントローラ。
src/main/java/jp/dip/arimodoki/cntl/WebSocketCPU.java

このコントローラは、単純に初期画面を表示するためだけのコントローラです。
単純に初期画面、websocketcpu.htmlを返却しています。

2)WebSocketハンドラ登録クラス
src/main/java/jp/dip/arimodoki/common/ApplicationConfig.java
@Configurationおよび、@EnableWebSocketというアノテーションを使用するため
Spring設定ファイル(applicationContext.xml)で、コンポーネントスキャンを定義しているパッケージ下に配置する必要があります。
今回の例では、commonパッケージの下に置いています。

WebSocketハンドラを登録する方法は、これ以外に
Spring設定ファイル(applicationContext.xml)で定義する方法もあります。
具体的な設定方法は、「応用の森 Spring-MVC編 No003:WebSocket(ライン風)サンプル
で説明してあるので、そちらを参照してください。

3)WebSocketハンドラクラス
src/main/java/jp/dip/arimodoki/websocket/CPUHandler.java

WebSocketハンドラの本体です。
TextWebSocketHandlerクラスを拡張して、
afterConnectionEstablished()、afterConnectionClosed()、handleTextMessage()メソッドをオーバーライドして
目的に応じて、中身を実装します。
今回は、handleTextMessageメソッドで、Connectionしてきたセッションごとに
CPU使用率処理Runnableスレッド(CPUHandlerRun)を実行する処理を組み込んでいます。

4)CPU使用率計算実行Runnableスレッドクラス
src/main/java/jp/dip/arimodoki/websocket/CPUHandlerRun.java

CPU使用率計算ロジックの本体です。
WebSocketハンドラが、Client(ブラウザ)から開始コマンドを受け取ると、
このRunnableスレッドが開始し、3秒ごとにサーバーのCPU使用率を取得し、
CPU使用率情報格納Bean(CpuUsed)にデータを格納し、
JSON形式にシリアライズして、メッセージをClient(ブラウザ)に返却します。
Clientから停止コマンドを受け取るか、約2分実行するとスレッドは自動停止します。

5)CPU使用率情報格納Bean
src/main/java/jp/dip/arimodoki/model/data/CpuUsed.java
このクラスは必須というわけではないですが、
CPU使用率計算結果のbeanの配列を、JSON形式の文字列に変換してClient(ブラウザ)に返却するために
JSONコンバータを使ってシリアライズしやすいようにするために使用しています。

JSONコンバータの説明は、「JSONぶらり旅 1)グラフ描画(mock) サーバープログラム解説
で説明していますので、そちらを参照してください。

同階層にインターフェースCpuUsedIf.javaが必要ですが、
Eclipseの「インターフェース抽出」で自動生成できるので、ここでは割愛します。