■応用の森 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の「インターフェース抽出」で自動生成できるので、ここでは割愛します。 |
CPU使用率推移グラフ View(HTML) ![]() |
CPU使用率推移グラフ 実行クラス |