Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

JAX-RSでは次に挙げるアノテーションをメソッドの引数などに付けることでクエリパラメータやパスの一部を受け取ることができます。 @MatrixParam @QueryParam @PathParam @CookieParam @HeaderParam メソッドの引数はStringやプリミティブを使うことができますが、それ以外のクラスも使用できます。 Stringの引数をひとつだけ受け取るpublicなコンストラクタを持つクラス 次のようなクラスでもクエリパラメータなどを受け取ることが出来ます。 public class Hoge { public final String value; public Hoge(String value) { this.value = value; } }
RESTEasyとは 世界最高峰の自転車プロロードレース「ツール・ド・フランス」が今年も始まった。今年は2名の日本人選手が出場しており、すでに第2、第3ステージでそれぞれ5位、8位を獲得するという日本のロードレース史上に残る快挙を成し遂げている。しばらくは寝不足の日々が続きそうだ。 さて、今回紹介する「RESTEasy」はオープンソースのJAX-RS実装である。JAX-RSはJavaプラットフォームにおいてREST(REpresentational State Transfer)スタイルのWebアプリケーションを開発するためのAPI仕様であり、次期Java EEプラットフォームとなるJava EE 6に追加される新機能としても注目されている。 JAX-RSの公式な参照実装はGlassFishプロジェクトのサブプロジェクトとして開発されている「Jersey」だが、RESTEasyはそれとは別
第1回 いまさら始めるJavaでRESTful Webサービス構築 皆さんはRESTful Webサービスを構築した経験はありますか?「いや、まったく・・・」という方や、「バリバリ作ってるよ!」という方、「RESTful?なにそれ?おいしいの?」という方もいると思います。 本連載では、JAX-RS(The Java™ API for RESTful Web Services)を使って、簡単なRESTful Webサービスの構築方法をご紹介していきます。なお対象読者は、Java言語を利用したことがあり、Webアプリケーション開発経験のある方を想定しています。 RESTful? JAX-RS? 冒頭に出てきたRESTfulやJAX-RSという単語、いったいどういうものなのでしょう? まずRESTfulですが、下記の抜粋(http://ja.wikipedia.org/wiki/RESTから一部
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-bundle</artifactId> <version>1.11.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.sun.jersey.jersey-test-framework</groupId> <artifactId>jersey-test-framework-http</artifactId> <version>1.11.1</version> <scope>test</scope> </dependency> Jerseyのartifactはjersey-serverやjersey-jsonなどいくつかに分かれているのですが、jersey-bun
2012-12-17 JAX-RSでファイルアップロード! JavaEE Advent Calendar 2012、17日目の記事です。昨日は@akirakoyasuさんの「Programmiatic CDI」です。 Servletではおなじみのファイルアップロード、実はJAX-RSでも実現できることをご存知ですか? JAX-RSの仕様には含まれていませんが、JAX-RSクライアント同様、多くの実装がファイルアップロード(正確にはマルチパート・リクエスト)に対応しています。私が確認しただけでもJersey、RESTEasy、Apache CXFがファイルアップロードに対応しています。 実はGoogleで「JAX-RS Multipart」と検索すると47,000件以上もHitします。結構知られているのですね。やり方も1通りではないようです。今回はJerseyとRESTEasyを使った最も簡
JAX-RSとは JAX-RSは、JavaでRESTful Webサービスを実現するためのAPIで、JSR-311として仕様策定作業が進められています。JavaEEの次世代バージョンにあたるJavaEE6のAPIグループに加わることが決まっている、将来性の高いAPIです。 執筆時点ではPublic Reviewが公開されている段階ですが、近い将来、最終仕様(Final Release)が確定するものと思われます。ちなみに、Public Reviewとして公開されているJSRドキュメント(PDF)のページ数は、たったの33ページです。このことからも分かるように、JAX-RSは、非常に軽量で、習得しやすいAPIと言うことができます。 JAX-RSの主な特徴を簡単にまとめると、以下のようになります。 JAX-RSは、RESTful Webサービスのプロバイダ(サービス提供者)の開発のためのAPI
さて、JAX-RSで返すものはHTMLやTEXTだけではないはずだ。AJAXではJSONはよく使われる。これがシンプルに返せるのがいい。 JAX-RSにはもちろんそれを生成する能力はある。 JAX-RSの参照実装であるJerseyはオブジェクトをシリアライズする方法が2つある。 1つ目はJAXBを利用する方法。これは以前紹介した。 JSONはJettison経由で変換する。JettisonはあくまでもJAXBを経由、つまりXMLを経由するわけだ。そのため、無指定だと数字型もなにもかもダブルクォーテーションがついて文字列型になってしまう。かといって毎回個別に設定するのは手間だ。 そこで2つ目の方法を紹介する。 それはJacksonを利用する。 Jacksonは超高速名JSONパーサで有名なので知っている人も多いと思う。JAX-RSの依存jarにJacksonが含まれているのに気がついた人もい
第43夜、第45夜の続き。 前回でJAX-RSからサーブレットAPIは消えた。 しかしテンプレートがJSPではサーブレットAPIが残ったままだ。 43回でチラッとだけ書いた(「今回は」JSP)が、テンプレートを自由に設定できるのがJersey(JAX-RS参照実装)の強みだ。 ためしにVelocityを使ってみよう。 テンプレート。index.vmという名前にしてある。 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>${it.a} + ${it.b} = ${it.c}</h1> </body> </html> JAX-RSのソースは一切変更なし。 @Path("calc") public class C
好評だった第43夜の続き。 あの時はパラメータとして渡すためにHttpServletRequestを使った。 それを使わない方法がある。 ソースを見れば一発でわかる。第43夜と比べてほしい。 @Path("calc") public class CalcResource { @Path("{a}/{b}") @GET public Viewable add(@PathParam("a")int a, @PathParam("b")int b) { Map<String,Object> params = new HashMap<String,Object>(); params.put("a", a); params.put("b", b); params.put("c", a + b); return new Viewable("/index.jsp", params); } } テンプレー
久々のJavaネタ。 JAX-RSのRI実装であるJerseyでのWebアプリケーションの作り方。 いつものように足し算する。 テンプレート。今回はJSP。 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>${a} + ${b} = ${c}</h1> </body> </html> アクションクラス。 @Path("calc") public class CalcResource { @Path("{a}/{b}") @GET public Viewable add(@Context HttpSe
かなり久々の技術エントリ。 運用はお堅い重いサーバーを使ったとしても開発は軽いほうがいい。当たり前ですね。 というわけでさくさく開発する方法を書いてみる。DIコンテナはCDIやGuice、Springなど好きなものでよいが、今回は省く。軽いこともあって開発中はGuiceを使うことをお勧めしたい。注入は@Injectを使うため、開発中と運用中でコードが変わるってのは少ないはずだ。 まずはJAX-RS まず、アクションベースのWebアプリはJAX-RSを使うこと。これが基本。サーブレットAPIを使わずに開発することについては今までも書いてきた。サーブレットAPIを触らないことにより開発効率とテストのしやすさを両立できる。 こんな感じ。 @Path("/") public class Hoge { @GET @Path("add/{a}/{b}") public Response add(@Pa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く