Javaこの広告は、90日以上更新していないブログに表示しています。2012-12-22今どきのウェッブサービスの作り方みなさんRESTfulなWEBサービス作るときなにを使いますか?・・・PHP?ああ、はい、なるほどね。Ruby?なんですかそれは?きいたことがないですね。Java?それは素晴らしい選択です!ああ、でもJavaEEはダメです。アレは古い上に複雑すぎて。今どきのハイカラな技術者はみなさんJavaSEを使っていますよ。ええ、もちろんとっておきの簡単フレームワークがあるんです。落ち着いて、これをダウンロードしてみて下さい。http://www.restlet.org/Downloadsというところから、バージョンは・・・そうですね、testingで結構です、JavaSEバージョン、ZIP版を選びましょう。あっ、Mavenをお使いですね?それでしたら簡単です。</dependency>さあ、準備は整いました。コードを書きましょう。今回のサンプルは/testというアプリケーション内に/helloというリソースがあるというサービスです。}RestletはRESTfulな概念に忠実に倣ったフレームワークです。ComponentにApplicationを繋げて行きましょう。TestApplicationは今回のサンプルアプリケーション「/test」です。}}Routerは文字通りリソースへのルーティングを行います。ここで複数のリソースを登録できます。今回は/helloというリソースを登録しましょう。はい、そしてそれはインスタンスではなくクラスです。}}おっと、依存を追加するのを忘れました。</dependency>Restletは多彩な拡張機能を提供します。今追加したのはJSON拡張。レスポンスをJSONで返したり、JSONのリクエストを処理したりするためです。今どきJSONでしょ?さあ、これで立派なウェッブサービスが完成しました!起動してみて下さい。・・・どうでしたか?RESTfulな世界を体験できましたか?とっても簡単でしょう?ここからはRestletをフル活用するためのヒントを幾つか紹介しましょう。ErrorのHTMLページが出てきてしまいます。サービス的には適切なオブジェクトを返すのが無難でしょうから、ServerResource#doCatchをオーバーライドしましょう。これらのコードはあるサービスの一部ですが、次のような手製Exceptionを作成しておくと便利です。MongoDBMongoDBは本当に素晴らしいDBです。私はRestlet用のDBには必ずこれを使います。Mongoインスタンスはシングルトンにしておくと良いでしょう。今どきのウェッブに必須なOAuth2.0用拡張も用意されています。Software社のWrapperを利用することを推奨しています。簡単な手段はWrapperSimpleAppを使用することです。クライアントRestletはサーバーサイドだけでなく、クライアントサイドのフレームワークとしても長けています。JsonRepresentation(representation).getJsonObject();簡単でしょう?しかもサーバーサイドとアーキテクチャが同じことに注目して下さい。サーバーサイドがRepresentationとしてレスポンスしているのが、そのままクライアントサイドでもRepresentationとして受け取ります。実はサーバーサイドのスタブのようなものを作成して、まるで直接相手のServerResourceを呼び出しているかのような記述も可能なんですよ。Connectorサーバーサイド、クライアントサイド共に、Connectorを指定することができます。実際のサーバ、クライアントの実装を差し替えることができるのです。サーバーサイドだとデフォルト実装、Jetty、JDKNet等。私のおすすめは断然Jettyです。ConfigurationComponentのセットアップをベタにmain内に書くのももちろんOKですが、サービスが複雑になるとメンテナンスが大変になります。XML設定ファイルを用いれば、ComponentからVirtualHostの設定まで、柔軟に記述できます。(XMLファイルとして外部URLも指定できます。2012の21日目のエントリでした。前回は@kisさんのJavaでのパターンマッチを考えるでした。次回は@masudaKさんです。Eclipse月別アーカイブはてなブログをはじめよう!Fantom_JACさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。