2014年3月14日金曜日

Mac X 10.8.5(Mountain Lion)のEclipseでJDK7を利用する方法

Mac OS X上のEclipseでJDK7を入れる方法をググると情報が錯綜しているようなので私がやった方法をまとめてみた。

1. まずOracleのサイトからJDKを取得(*)

2. dmgを叩いてインストール。

3. Eclipse->Preference->Java->Installed JREを開き、下記の場所をJRE Homeに指定。

Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/

(*)Apple公式から落とすとの情報もあったが、ファイル名にバージョンの表記がなくよくわからなかったので、Oracleから落とした。

JDKのインストール場所がわからなくって結構困った。

またjava preferences というアプリが、/Utility/Application配下にあり、ここにパス情報が書かれているとの情報が良く出てくるが、最近ではなくなっているようだ。

参考文献。
MacにJDK7をインストールしたからといってAppleのJDK6を消してはいけない

java preferencesがない

2014年3月7日金曜日

Jerseyのサンプルコード

JavaでRestfulなサーバを実装するためのライブラリであるJerseyを触ってみました。
アノテーションを利用することによって、URLとJavaのメソッドの呼び出しを簡単に実装できるようになってます。


import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("sample/{samplePathParam}")
public class Main {
 @Path("get1")
 @GET
 @Produces(MediaType.TEXT_PLAIN)
 public String get1(
   @DefaultValue("2") @QueryParam("testInt") int testInt,
   @DefaultValue("true") @QueryParam("testBoolean") boolean testBoolean,
   @DefaultValue("value") @QueryParam("testString") String testString) {
  return String.valueOf(testInt) + ";" + String.valueOf(testBoolean)
    + ";" + String.valueOf(testString);
 }
 @Path("get2")
 @GET
 @Produces(MediaType.TEXT_PLAIN)
 public String get2(
   @PathParam("samplePathParam") String param) {
  return param;
 }
 @Path("get3/{samplePathParamWithConstraint: [a-z]*}")
 @GET
 @Produces(MediaType.TEXT_PLAIN)
 public String get3(
   @PathParam("samplePathParam") String param1,
   @PathParam("samplePathParamWithConstraint") String param2) {
  return param1 + ":" + param2;
 }
}

これに対して色々アクセスしてみました。
http://localhost:8080/SampleServer/webapi/sample/foo/get1?testInt=10&testBoolean=false&testString=hoge
=>10;false;hoge
get1以下のクエリストリングがjavaの引数に渡されています。
http://localhost:8080/SampleServer/webapi/sample/foo/get2
=>foo
@Path("sample/{samplePathParam}")で指定したsamplePathParamがget2の引数に引き継がれてます。
http://localhost:8080/SampleServer/webapi/sample/foo/get3/bar
=>foo:bar
@Path("sample/{samplePathParam}")で指定したsamplePathParamと@Path("get3/{samplePathParamWithConstraint: [a-z]*}")で指定したsamplePathParamWithConstraintがget3の引数に引き継がれてます。

アノテーションの使い方の詳細は公式ドキュメントがわかりやすいです。

参考文献
Chapter 3. JAX-RS Application, Resources and Sub-Resources