忘れないうちにメモ
参考にしたサイト
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つのクラスを新規作成する
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 !!";
}
}
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);
}
}
}
JettyやJerseyの.jarが足りなくて、Compile errorが出てるので、 プロジェクトビューの "Project Files/pom.xml" を開き、 <dependencies>...</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
<?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 !!" と表示されます