LoginSignup
13
15

More than 5 years have passed since last update.

Jetty+Jerseyを動かしてみる

Posted at

忘れないうちにメモ

参考にしたサイト

Requirement

  • NetBeans (8.0.1) を使います
  • Mac OS 10.10 で試してます

JettyをDownload, 起動

Jettyダウンロードサイトから、最新のリリース "9.2.5.v20141112" (zip) をダウンロードしたら、どこでもいいので解凍する

Terminalから以下のコマンドでJetty起動

$ cd (解凍した場所)/jetty-distribution-9.2.5.v20141112
$ java -jar start.jar

NetBeansでサンプルプロジェクトを書いてみる

NetBeansを起動して、新しいプロジェクトを作ります。

File -> New Project...

"Maven" category の "Web Application" project を選択

Category: "Maven"
Projects: "Web Application"

"Projects"ビューで、"com.mycompany.jettyjersey" packageを右クリックして、以下2つのクラスを新規作成する

HelloService.java
package com.mycompany.jettyjersey;

import javax.ws.rs.GET;
import javax.ws.rs.Path;


@Path("/hello")
public class HelloService {

    @GET
    public String hello() {
        return "Hello !!";
    }
}
Launcher.java
package com.mycompany.jettyjersey;

import java.net.URL;
import java.security.ProtectionDomain;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;


public class Launcher {
    public static void main(String[] args) throws Exception {
        Server server = new Server(8080);
        WebAppContext context = new WebAppContext();
        context.setContextPath("/");

        ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain();
        URL location = protectionDomain.getCodeSource().getLocation();
        context.setWar(location.toExternalForm());

        server.setHandler(context);
        server.start();

        try {
            server.start();
            System.err.println("Press ENTER to exit.");
            System.in.read();
            server.stop();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}

JettyJerseyの.jarが足りなくて、Compile errorが出てるので、 プロジェクトビューの "Project Files/pom.xml" を開き、 <dependencies>...</dependencies> に以下の記述を追加する

pox.xmlの<dependencies>の中に追加
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.13</version>
</dependency>

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet-core</artifactId>
    <version>2.13</version>
</dependency>

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-server</artifactId>
    <version>9.2.5.v20141112</version>
</dependency>

<dependency>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-webapp</artifactId>
    <version>9.2.5.v20141112</version>
</dependency>

web.xmlを新規作成する

File -> New File... -> Web -> Standard Deployment Descriptor
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
    <servlet>
        <servlet-name>JettyJerseyApp</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.mycompany.jettyjersey</param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.scanning.recursive</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>JettyJerseyApp</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

ビルド

NetBeansメニューから

Run -> Clean and Build Project

Consoleに "SUCCESS" と出て、"JettyJersey/target/JettyJersey-1.0-SNAPSHOT.war" が出来たら成功

デプロイ (手動)

今回は手動でデプロイする

"JettyJersey/target/JettyJersey-1.0-SNAPSHOT.war" を
"(解凍した場所)/jetty-distribution-9.2.5.v20141112/webapps" にコピペ

コピペするだけで、Jettyが勝手にデプロイしてくれます

アクセスしてみる

"Hello !!" と表示されます

13
15
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
13
15