22
GlassFish REST backend Decenber 13, 2013 HASUNUMA Kenji GlassFish Community E-mail: [email protected] Twitter: @khasunuma © U.S.Navy : http://www.navy.mil/viewGallery.asp

GlassFish REST backend

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: GlassFish REST backend

GlassFish REST backend Decenber 13, 2013

HASUNUMA Kenji GlassFish Community

E-mail: [email protected] Twitter: @khasunuma

© U.S.Navy : http://www.navy.mil/viewGallery.asp

Page 2: GlassFish REST backend

GlassFishの管理と監視

1.CLI Framework (asadmin)

2.REST backend

※管理コンソール→REST backendを利用

Page 3: GlassFish REST backend

What’s REST?

© U.S.Navy http://www.navy.mil/viewGallery.asp

Page 4: GlassFish REST backend

RESTの3要素 •リソース •メソッド (リソースの操作) •URI (リソースの識別)

Page 5: GlassFish REST backend

RESTなもの(RESTful)の例

• Amazon

• Twitter

• Facebook

→RESTの3要素=メソッドの使い分け

Page 6: GlassFish REST backend

RESTでないものの例

• Apache Struts

• JavaServer Faces

• SOAP Based Web Service

→何でもかんでもPOSTで処理

Page 7: GlassFish REST backend

REST backendのリソース(URI):

http://localhost:4848!

/management/domain !

/monitoring/domain

■管理チャネル

■監視チャネル

Page 8: GlassFish REST backend

リソース(URI): JDBCコネクションプール

/management/domain /resources /jdbc-connection-pool /DerbyPool /__TimerPool

Page 9: GlassFish REST backend

リソース(URI): JVMオプション一覧

※コマンド: それ自身は情報を持たない(GETメソッドによるアクション実行)

/management/domain /list-jvm-options

Page 10: GlassFish REST backend

リソース(URI): JVMメモリー使用量

※モニタリング: その瞬間の値を取得

/monitoring/domain /server /jvm /memory

Page 11: GlassFish REST backend

GET 管理・監視

• リソース(URI)の状態を取得する

• 子リソースの値や形式を取得する(有効なメソッド、データ形式)

POST 管理

• リソースの状態を変更する

• 設定変更 & 子リソースの作成(方法→事前にGETで調べておく)

PUT -

• リソース(URI)を作成する

• REST backendでは使用しない→親リソースへのPOSTで代用する

DELETE 管理

• リソース(URI)を削除する

• リソース(JDBCコネクションプール等)の削除に用いる

Page 12: GlassFish REST backend

How to use it?

© U.S.Navy http://www.navy.mil/viewGallery.asp

Page 13: GlassFish REST backend

必要なもの: HTTPクライアント

•Webブラウザ

• HTTPクライアントアプリケーション(有償でも良いものを選択すること!)

• HTTPクライアントライブラリ(Java: JAX-RS 2.0クライアント推奨)

Page 14: GlassFish REST backend

REST管理チャネルの入出力

• HTML … Webブラウザ用

• XML … DOM、StAX、JAXB等

• JSON … JavaScript、JSON-P等

※リクエストのAcceptヘッダーまたは拡張子(.html .xml .json)で指定可 ※例外あり

Page 15: GlassFish REST backend

REST backendのXML-JSON対応表

JSON XML XMLの凡例

key : value entry要素 <entry key=“key” value=“value”/>

{ … } map要素 <map>…</map>

[ … ] list要素 <list>…</list>

※最も外側は、JSONでは {…}、XMLではmap要素です

Page 16: GlassFish REST backend

REST backend出力の最上位項目

commandコマンド名

(内部での識別に利用)

exit_code成功時 “SUCCESS”失敗時 “FAILURE”

messageメッセージがあれば設定 (監視では常に空文字列)

extraProperties取得・設定するキー/値

リソースごとに内容は異なる

Page 17: GlassFish REST backend

管理: extraPropertiesの主な子要素

childResources 子リソースを表すmap、値は子リソースの絶対URI。末端以外に存在する。

entity このリソースに設定されているパラメータで、なければ項目ごと省略。

methods このリソースが受け付けるメソッドのリスト、entityと対応する。

commands コマンド(管理操作)のリスト。

commandLog 過去に実行されたコマンド(管理操作)の一覧。省略される場合もある。

children 一覧系コマンド(list-~)の実行結果

Page 18: GlassFish REST backend

監視: extraPropertiesの子要素

childResources

子リソースを表すmap、値は子リソースの絶対URI。管理チャネルと異なり末端でも必ず存在(空のmap)。子リソースがない場合は、entityのキーを子URIに代用してentityを絞り込み可。

entity

このリソースに設定されているパラメータ。管理チャネルと比較して項目数が多くネストも深い傾向にある。監視チャネルではパラメータがない場合でも必ず存在(空のmap)。

Page 19: GlassFish REST backend

Using REST backend【管理】POSTまたはDELETEメソッド使用時は、リクエストヘッダー X-Requested-By を含める(GlassFish 3.1.2以降のセキュリティ強化による)

※GETメソッドの場合は不要

• 例: (リクエストヘッダー)…X-Requested-By: GlassFish REST HTML interface…

Page 20: GlassFish REST backend

Using REST backend【管理】【監視】DASにパスワードを設定している場合、認証なし/平文BASIC認証のいずれも受け付けない →以下、対応方法

1.セキュア管理を有効にした上で、BASIC認証を使用する(HTTPS通信になる)

2.BASIC認証でセッショントークンを取得し、その値をクッキー gfresttoken に設定する※30分でタイムアウトするので注意

Page 21: GlassFish REST backend

REST backendの活用シーン

•管理/監視ソリューションの開発

• 標準の管理コンソール

• 3rdパーティーの監視ツール LightFish

•GlassFish管理の自動化(管理スクリプトの代用として)

•アプリケーションからの設定変更

•その他、アイデアさえあれば…

Page 22: GlassFish REST backend

GlassFish REST backend HASUNUMA Kenji [email protected]

© U.S.Navy http://www.navy.mil/viewGallery.asp