LoginSignup
4
6

More than 5 years have passed since last update.

JAX-RSを試してみたんで手順をメモ

Posted at

環境

OS or ソフトウェア version
macOS Sierra
Eclipse 4.6(NEON)
(Eclipse plugin)Buildship Gradle Integration 2.0
Java SE 1.8.0_121_b13
glassfish 4.1.1
gradle 3.4.1

インストールについては割愛します。

手順

  • gradleプロジェクトを作る
    Eclipseで、[新規]>[Gradle]>[Gradleプロジェクト]として、プロジェクトを新規作成する。

  • プロジェクトのプロパティを開いて、「プロジェクト・ファセット」を追加する。

  • 「動的 WEB モジュール」を追加する。その時、プロジェクト・ファセットの画面右側の「ランタイム」を選んで「Glassfish4」を選択する。
    画面イメージ

  • build.gradleを以下のように修正する。

build.gradle
apply plugin: 'war'
apply plugin: 'java-library'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    providedCompile 'org.projectlombok:lombok:1.16.4'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.8.6'
    compile 'com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:2.8.6'
    providedCompile 'javax:javaee-web-api:7.0'
    providedCompile fileTree(dir: '/glassfish4/glassfish/modules', include: '*.jar')

    api 'org.apache.commons:commons-math3:3.6.1'
    implementation 'com.google.guava:guava:21.0'
    testImplementation 'junit:junit:4.12'
}

war {
    exclude 'WEB-INF/lib/**'
    exclude 'WEB-INF/classes/**'
}

  • プロジェクトを右クリックして、[Gradle]>[Gradleプロジェクトのリフレッシュ]を実施する。
    この時、ライブラリのGlassfishのランタイムが消えてしまう謎の事象あり・・・。再度プロジェクト・ファイセットを開いて付け直す必要がある...なぜかは不明です(汗)

  • あとはソースファイルを書いて、サーバに追加して実行する。

link.griffin.study_gradle.jaxrs.ApplicationConfig.java
package link.griffin.study_gradle.jaxrs;

import javax.ws.rs.ApplicationPath;

import org.glassfish.jersey.server.ResourceConfig;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;

@ApplicationPath("stdy")
public class ApplicationConfig extends ResourceConfig {
    public ApplicationConfig(){
        //自作のresourceを登録
        this.packages(ApplicationConfig.class.getPackage().getName());
        this.packages("com.snail.waf21.rest")
        //Jacson用のクラスを登録
        .register((new JacksonJaxbJsonProvider(new ObjectMapper(),
                JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS)))
        //JSONP用のクラスを登録
        .register(org.glassfish.jersey.jackson.JacksonFeature.class);

    }
}
link.griffin.study_gradle.jaxrs.SampleResource.java
package link.griffin.study_gradle.jaxrs;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import link.griffin.study_gradle.jaxrs_sdo.DataSdo;

@Path("rs")
public class SampleResource {

    @GET
    @Path("run")
    @Produces(MediaType.APPLICATION_JSON)
    public DataSdo run(){
        DataSdo data = new DataSdo();
        data.setName("hogehoge");
        data.setId(12345);
        return data;
    }
}
link.griffin.study_gradle.jaxrs_sdo.DataSdo.java
package link.griffin.study_gradle.jaxrs_sdo;

import javax.xml.bind.annotation.XmlRootElement;

@lombok.Data
@XmlRootElement
public class DataSdo {
    private String name = "";
    private Integer id = 0;
}
4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6