« ◇raspi3お手軽試験キットで、LEDランプ点滅、センサー値取得 | トップページ | ◇プロポーショナル・フォント廃絶を! »

Tomcat-Jersey2でREST:臨時メモ

Tomcat-Jersey2でRESTサービスを実装します。
細かな説明はまだ入れていませんが、とにかく動いたというものを示します。
サンプルもダウンロード可能としました。

 Jersey2のダウンロード/インストール

Tomcatは既に動いているとして。

https://jersey.java.net/download から Jersey JAX-RS 2.0 RI bundle"をダウンロードします。

ダウンロードしたjaxrs-ri-2.24.1.zipを展開すると次の3つのフォルダがあります。

  • api
  • ext
  • lib

この3つのフォルダに入っているjarを全てTomcatのlibにコピーします。 Tomcatのlibは例えば

C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib
あるいは
/usr/share/tomcat7/lib
などとなっています。

本来はlibのみTomcatのlibにコピーし、extはJavaのlib/extにコピーするのが正しいやり方かも知れません。apiは?

Jersey2のインストールはこれで完了です。

 RESTプログラムの作成

ここではTomcatのwebappフォルダ上で直接プログラム作ってみます。

フォルダは次のようになります。
URLの第1段(ここではrestTest)がここで決まります。

C:\Program Files\Apache Software Foundation\Tomcat 7.0\
   webapp\
      restTest\      <-- アプリケーションのエントリとして作成
         WEB-INF\
            web.xml                 設定ファイル
            classes\
               sample\               パッケージ
                  HelloWorld.java    サービスプログラム実体
                  MyApplication.java 設定プログラム
あるいは
/var/lib/tomcat7/
   webapp/
      restTest/      <-- アプリケーションのエントリとして作成
         WEB-INF/
            web.xml                 設定ファイル
            classes/
               sample/               パッケージ
                  HelloWorld.java    サービスプログラム実体
                  MyApplication.java 設定プログラム
Unixではlibフォルダが/usr/share/tomcat7でwebappは/var/lib/tomcat7と異なることに注意が必要です。

サービスプログラムは次のようになります。
URLの最終段(ここではhello)がここできまります。

package sample;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/hello")
public class HelloWorld {
   @GET
   @Produces(MediaType.TEXT_PLAIN)
   public String sayHello() {
      return "Hello world";
      }
   }

MyApplication.java次のようになります。
package sample;
import org.glassfish.jersey.server.ResourceConfig;
public class MyApplication extends ResourceConfig {
   public MyApplication() {
      packages("sample");// パッケージを指定
      }
   }
web.xmlは次のようになります。 URLの第2段(ここではrest)がここで決まります。
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
   <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class
        >org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>sample.MyApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

HelloWorld.javaとMyApplication.javaをビルドすると完成です。ビルドは次のように行います。

set LIB=..\..\..\..\..\lib\javax.ws.rs-api-2.0.1.jar;
set LIB=%LIB%..\..\..\..\..\lib\jersey-server.jar;
set LIB=%LIB%..\..\..\..\..\lib\jersey-common.jar;
echo %LIB%
javac -cp "%LIB%" HelloWorld.java
javac -cp "%LIB%" MyApplication.java

次のURLでアクセスすると"Hello World"が表示されます。

http://localhost:8080/restTest/rest/hello

 サンプル

restTest以下を restTest.zipに置きました。

これをTomcatのwabappの下に置いて、classesの下の2つをビルドすれば動作します。
classesの下にビルドのためのバッチbuild.batを置きました。

 ダウンロード/インストール(UBUNTU)

oracle-java1.7のダウンロード/インストール

$ sudo apt-get update
$ sudo apt-get install oracle-java7-jdk

ANTのインストール

sudo apt-get install ant

Tomcatのインストール

$ sudo apt-get install tomcat7 tomcat7-admin tomcat7-common tomcat7-docs tomcat7-examples tomcat7-user
後ろのtomcat7-XXXは不要だと思いますが、念のため。

サービスを起動させればTomcatでのアクセスができます。

$ sudo service tomcat7 restart

 ダウンロード/インストール(Raspi)

Raspiには予めjava8が入っていた。次のようにしてインストールしたが今の所8がそのまま動いている。

$ sudo apt-get update
$ sudo apt-get install oracle-java7-jdk

ANTのインストール。次のようにしてインストールしたがJava8ではANTは動かない。

sudo apt-get install ant

Tomcatのインストール

$ sudo apt-get install tomcat7 tomcat7-admin tomcat7-common tomcat7-docs tomcat7-examples tomcat7-user

|

« ◇raspi3お手軽試験キットで、LEDランプ点滅、センサー値取得 | トップページ | ◇プロポーショナル・フォント廃絶を! »

トラックバック


この記事へのトラックバック一覧です: Tomcat-Jersey2でREST:臨時メモ:

« ◇raspi3お手軽試験キットで、LEDランプ点滅、センサー値取得 | トップページ | ◇プロポーショナル・フォント廃絶を! »