BT

JRubyとJerseyによるRubyのRESTfulサービス

| 作者: Dilip Krishnan フォローする 0 人のフォロワー , 翻訳者 竹中 翔 - (株)ポータルアイランド フォローする 0 人のフォロワー 投稿日 2010年6月14日. 推定読書時間: 3 分 |

原文(投稿日:2010/06/02)へのリンク

Rubyの表現力とJavaのRESTフレームワークを足し合わせるため、Charles Nutter氏はJRubyとRailsを使ってRESTfulサービスを構築した。彼はまず、RESTfulアプリケーションを構築しているRubyやRailsのコミュニティを調査した。

[…] RubyistたちはRESTfulな世界を先導してきました。彼らが書いたコードはそのほとんどがRESTfulです。RailsはRESTを中心に構築されており、ほとんどのコントローラはRESTfulなインターフェースになっています。さらにRailsは、アプリケーションから、RESTfulなWebサービスの透過的呼び出しを補助するツールも提供しています。もしRESTfulなWebサービスや典型的なRubyアプリケーションを開発しているのなら、Railsをお勧めします。

Charles氏は、JRubyのRESTfulサービス構築能力を示すため、JavaでRESTfulサービスを構築するためのライブラリやフレームワークといったソリューションの調査を行い、手始めに、標準JAX-RS APIを使ってシンプルなサンプルサービスを構築した。

JerseyのGetting StartedのチュートリアルをRubyで実装しました(今回はMavenは使っていませんが)。私が作ったHelloWorldResourceは、このようなコードです。

require 'java'java_import 'javax.ws.rs.Path'
java_import 'javax.ws.rs.GET'
java_import 'javax.ws.rs.Produces'

java_package 'com.headius.demo.jersey'
java_annotation 'Path("/helloworld")'
class HelloWorld
java_annotation 'GET'
java_annotation 'Produces("text/plain")'
def cliched_message
"Hello World"
end
end

Rubyクラスのコンパイルやオブジェクトのインメモリ表現について、彼は次のように説明している。

内部的には、このクラスは我々が書いたrestful_service.rbファイルのソースコードをロードし、RubyとJavaの両方からHelloWorldクラスとして見えるようになります。メソッド呼び出しはRubyコードにディスパッチする、コンストラクタはinitializeにディスパッチする、といった具合に動作します。このクラスは、本当にRubyとJava、両方の世界に存在しているのです。
サービスができたので、次はそれを起動するためのサーバスクリプトが必要です。

次に、サンプルを実行するための、正しいCLASSPATHの設定について説明している。

私は次のjarを環境変数CLASSPATHに追加しました(必ずしも環境変数に追加する必要はありませんが)

jersey-core-1.2.jar
jersey-server-1.2.jar
jsr311-api-1.1.1.jar
asm-3.1.jar
grizzly-servlet-webserver-1.9.9.jar

上の4つのjarファイルはJerseyアーカイブダウンロードから、最後のjarファイルはここからダウンロードすることができます。

Charles氏は、“JRubyで試してみたアノテーションベースAPIのサンプルはありますか?”という呼びかけで締めくくっている。オリジナルの記事で、JRubyでのRESTfulサービスの書き方の詳細を参照し、フォーラムで面白いサンプルを共有して欲しい。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

特集コンテンツ一覧

.NETの派生を理解する

Wayne Citrin 2018年7月18日 午前3時44分

ASP.NET Core - シンプルの力

Chris Klug 2018年6月4日 午前3時26分

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT