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
© Copyright 2024 ExpyDoc