6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FUJITSUAdvent Calendar 2017

Day 17

フロンターレをマイクロサービス化する

Last updated at Posted at 2017-12-16

この記事はFUJITSU Advent Calendar 2017の17日目です。

本稿では、フロンターレの選手情報を、富士通のMicroProfile実装であるLauncherを使用し、REST APIで提供するプログラムを作成する方法を紹介します。

#その前に、MicroProfileとは
MicroProfileは、企業向けマイクロサービスをJavaで実現するための仕様検討などを行うコミュニティです。 (http://microprofile.io)
本稿では、MicroProfile 1.1で策定されている、以下の4つのAPIを使います。

  • JAX-RS
  • CDI
  • JSON-P
  • Config

#プログラム作成にあたり事前に用意するもの

Launcherの中に上記4つのAPIがすべて含まれているので、それ以外のライブラリやJava EE用の開発環境等は不要です。

#処理の流れ

  1. Config APIを使い、フロンターレのページのURLや、必要に応じてPROXY情報を取得します。
  2. フロンターレのページからHTMLを取得します。取得したHTMLをゴリゴリ解析、選手情報一覧を作成します。(ここはMicroProfileと関係なし)
  3. RESTのエンドポイントをJAX-RS/CDIで作成します。
  4. リクエストが来たら、JSONで返却します。

#ソースの作成

Frontale.javaのConfig APIのところだけ、解説。

Frontale.java
     71     Config config = ConfigProvider.getConfig();

ConfigProviderからConfigオブジェクトを取得します。実際のプロパティ値は、このConfigオブジェクトを通して獲得します。

Frontale.java
     77       url = config.getValue("frontale.url", String.class);

getValueメソッドの第一引数にプロパティ名、第二引数に型を渡します。プロパティ値が見つからなければ、NoSuchElementExceptionがスローされるます。

プロパティの指定はいろいろな方法がありますが、このプログラムでは、デフォルトのプロパティファイルを使用し、以下のように記述します。

microprofile-config.properties
  frontale.url = http://www.frontale.co.jp/profile/2017/number.html

#コンパイル

% javac -classpath launcher-1.0.jar -d classes *.java

#jarの作成

クラスファイルおよびプロパティファイルは、以下のように、jarにまとめておきます。

% jar tf frontale.jar
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/META-INF/
WEB-INF/classes/kzr/
WEB-INF/classes/kzr/frontale/
WEB-INF/classes/META-INF/microprofile-config.properties
WEB-INF/classes/kzr/frontale/Frontale$1.class
WEB-INF/classes/kzr/frontale/Frontale$Parser.class
WEB-INF/classes/kzr/frontale/Frontale$Parser2.class
WEB-INF/classes/kzr/frontale/Frontale.class
WEB-INF/classes/kzr/frontale/FrontaleApplication.class
WEB-INF/classes/kzr/frontale/FrontaleService.class
WEB-INF/classes/kzr/frontale/Player.class

#アプリの起動

以下のコマンドを実行するだけ。JDK以外、事前のインストールは不要。

% java -Djava.io.tmpdir=. -jar launcher-1.0.jar --deploy frontale.jar​

#実行結果

  • 選手の番号一覧 (http://localhost:8080/list)

  • 狩野健太の情報 (http://localhost:8080/25)

#おわりに

「マイクロサービス化」というのは言い過ぎでしたが、ここで紹介したように、MicroProfileを使うことで、簡単に軽量コンテナで動作するアプリケーションを作成することができるようになります。

6
2
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?