JPAを利用した RESTful Webサービスの開発

JPAを利用した
RESTful Webサービスの
開発
研究者 : 鎌田祐貴
指導教員 : 越田高志
1
1.はじめに
情報を受け取る
変化
情報を発信・提供する(Web2.0)
Webサービス
複雑
移
行
シンプル
2
研究目標
「生産工程管理システム」に
実装されているリアルタイムでの
「工程進捗管理機能」をWebサービスで
実現することを目標とする。
ユーザ
ネットワーク
リクエスト
GETプロトコル
レスポンス
HTTPサーバ
RESTful
Webサービス
MySQL
3
2.要素技術について
• REST(Representational State Transfer)
– リソース(URL)をHTTPプロトコルで操作する方式
– 主な特徴
• HTTPのGETプロトコルでXMLベースの情報を受け取
ることができる。
• URLからHTML情報の代わりにXML情報を取得して
いる。
– 利点
• Webサービスを利用する際に、スタブ(クライアントプロ
グラム)を作成する必要がない。
4
• アノテーション機能
– ソースコード中に付加された注釈情報のこと。
– Javaプログラムの記述をより簡潔かつ正確に
できる。
– 主な例
• @GET
• @Entity
• @Path
など・・・
5
• O/Rマッピング
– Javaのクラスをテーブルに対応させ、テーブルの
各行をそのクラスのオブジェクトと関連付ける。
– 効率よいデータベース操作が可能になる。
• JPA(Java Persistence API)
– O/Rマッピングを実現するためのクラスライブラリ。
– アノテーションを利用して、O/Rマッピングを自動
化でき、記述を簡潔にできる。
6
3.RESTful Web サービスの開発
• 開発環境
– フレームワーク : NetBeans6.7.1
– データベース : MySQL5.1.37
– HTTPサーバ : GlassFish V3 Plelude
7
システムの機能
• MySQLのnew_jobテーブルにアクセス。
• 指定されたロット番号に対する工程進捗情報
を表示する。
• ユーザは、ブラウザにWebサービスのURLと
入力パラメータを直接指定し、実行する。
8
new_jobテーブル
開始時間
終了時間
ロット番
機械ID
号
ロット番号(作番)を指定すると、
開始時間、終了時間、作業者ID、機械ID
が表示される。
9
MySQL
JPA
new_job テーブル
time_end
id_person
NewJob クラス
no_lot
O/Rマッピング
10
Webサービスの実行について
http://--:8080/Webサービス?パラメータ名=
パラメータ値
http://10.50.25.11:8080/ProTestDB/resources/
newJobs? query=SELECT%20e%20FROM%20
NewJob%20e%20where%20e.Lot%3D%27
M78%27
• URLのコードはUTF-8
– 空白 → %20
– 「=」 → %3D
– 「 ’ 」 → %27
11
JPQLの例
• new_jobデータベースの作番「M78」の開始
時間、終了時間、作業者ID、機械IDの全てを
表示する。
SELECT e FROM NewJob e
where e.Lot = 'M78'
NewJobクラスで生成さ
れたオブジェクト
12
Webサービスプログラムの説明
クラスにURLのパス
@path("/newJobs/")
を割り当てる
public class NewJobsResource{
public NewJobsResource(){
}
GETプロトコルでリソース
@GET
を取得する
@Produces({"application/xml"})
出力データと
してXML形式
を指定する。
・・・・・・・・・・・・・・
13
実行結果
14
デモ
• ロット番号「K0007」を指定する。
クエリ(JPQL)
SELECT e
FROM NewJob e
where e.Lot='K0003'
結果の表示
• 全てのデータを表示する。
クエリ(JPQL)
SELECT e
FROM NewJob e
結果の表示
15
4.今後の課題
• 入出力画面(GUI)の作成
– Webサービスの実行と結果の確認が容易に行え
るようにする。
• URLのUFT-8への自動変換
– ユーザが自分でUTF-8のコードを入力する必要
がないように、入力したクエリ文を自動的にUTF8に変換させる。
16