技術覚書

自分のために技術的なことを色々と書こうと思います。

「Kickstart a Jakarta EE 8 Application」をやってみた

こんにちは。
今日は「JakartaEE」に触れてみようのエントリです。

目次

このエントリの目的

先日関ジャバ主催の「OracleCodeOne報告会」で紹介された
Kickstart a Jakarta EE 8 Application」を実際にやってみて
ハマったこととか、学んだことをまとめる。

Kickstart a Jakarta EE 8 Application」とは?

手順書どおりに進めていくことで、

  • GitHubからサンプルアプリをクローンする
  • サンプルアプリをビルド、テストする
  • JakartaEE8仕様のサーバー(GlassfishWildFly、 Paraya、OpenLiberty)上にデプロイする。
  • サーバー起動して動作確認する

という一連の流れを体験できるものです。
ちなみに自分はGlassfish5.1サーバーで進めました。

Kickstart a Jakarta EE 8 Application(英文)

medium.com

このチュートリアルの説明が記載されています。
後述のGitHubのリンクも貼ってあります。

GitHub - JakartaEE8 Starter(英文)

github.com

手順とサンプルソース一式がリポジトリに入っています。
こいつをローカルPCにクローンして作業スタートです。

このアプリはどんな内容かというと

ttp://localhost:8080/jakartaee8-starter/api/greeting/【画面に表示したいメッセージ】

ブラウザに上記のURLを指定して起動すると
画面に【画面に表示したいメッセージ】が表示されるという
シンプルなアプリです。

ハマったこと

自分のPCスペックが低すぎてEclipseIntelliJ IDEAといったIDEがまともに動かない(笑)

ローカルにEclipseを入れて動かしたんですけども
もう起動に時間かかるし、全体的に動作が重くて
作業どころじゃねーよ!ってなりました。

きっと、使ってるマシンスペックが高ければIDEを使って
手順書通り進めて、問題なくアプリを動かすところまで
あっという間に終わってたと思います。手順自体は本当に簡単です。

Mavenコマンドがよくわからない。。。

IDEが使えない以上、ビルド、テスト、Glassfishサーバーへのデプロイを
自力でMavenコマンドを叩いて進めていくしかない(やり方は手順書に記載している)のですが
このとき手順をみてもどう動かせばいいかさっぱりわからなくて
「あ、自分Maven何もわかってないわ」ということに気づきました。

よし、急がば回れ

焦ってもしょうがないので、
「そもそもMavenって何?どんなことできるの?を調べる」ことにしました。

ネットで色々調べていく中でMavenチュートリアルを見つけたので
そこに載っているサンプルを写経して動かしながら
だいたいの流れをつかみました。

デプロイ時のトラブルその1

f:id:manabu-hashimoto:20200202145706j:plain

Glassfishサーバーにデプロイするためのコマンドを叩いたら
なんかエラーでてきた。なんやこれ。。。

コンソールを見てみると
「Remote server does not listen for requests on [localhost:4848]…」と書いている。
「あ!Glassfishサーバー起動させてなかったわーてへぺろー」ということが発覚。
めっちゃ初歩的ミスでした。

ではコマンドラインからGlassfishを動かそう

f:id:manabu-hashimoto:20200202145821j:plain

よし、これでいけるはず!

デプロイ時のトラブルその2

f:id:manabu-hashimoto:20200202145717j:plain

またエラーが出た。。。
さっきと違うエラーだから前進はしてるっぽいけど、今度は何(涙)

コンソールを見てみると
「…(中略)javax.security.auth.login.LoginException」と書いている。
Glassfishに対してアクセスはできるようになったがサーバーへの認証がしくじってる様子。

pom.xml内のGlassfishへのデプロイに関する記述で、認証情報が記載されているけど
Glassfishサーバー側でその認証情報を設定していなかったからだという
初歩的ミスに気付きました(笑)

そうとわかれば対策だ!

f:id:manabu-hashimoto:20200202145845j:plain

Glassfishのサーバーコンソールを起動して
「Change Administrator Password」のボタンをクリック。

f:id:manabu-hashimoto:20200202145833j:plain

で、管理者アカウント(admin)のパスワードを
pom.xmlに書いてあるパスワードと同じものを設定して「Save」ボタンをクリック。

そして下記コマンド叩いてサーバーを再起動。

# サーバ停止
./asadmin stop-domain

# サーバ起動
./asadmin start-domain

今度こそこれでいけるはずや。。。

3度目の正直デプロイの結果。。。

f:id:manabu-hashimoto:20200202145732j:plain

おおおお、「BUILD SUCESS」と書いてある!
デプロイできたか??

Glassfishサーバーのコンソールから
アプリがデプロイしているかを確認してみよう

f:id:manabu-hashimoto:20200202145746j:plain

「jakartaee8-starter」というアプリがデプロイされてる!!
うまくいった!!

動作確認

さぁいよいよアプリを動かしてみよう。。。

ブラウザから「ttp://localhost:8080/jakartaee8-starter/api/greeting/YAKINIKU」を入力。

f:id:manabu-hashimoto:20200202145803j:plain

よっしゃー!!
画面に「YAKINIKU」が表示されました!
ミッションコンプリート!!

学んだこと

Mavenのことをちゃんと理解するきっかけができた

きっとマシンスペックが高いPCでやってたらMavenについて
調べて理解しようということにはならなかっただろうなと思いました。

ほんまに結果オーライやけど
Mavenのことをちゃんと知るきっかけができてよかったです。

遠回りすることを楽しんで勉強しよう

単に勉強してるだけで誰に迷惑をかけているわけでもないので、
わからないことが出てきたら一旦やっていることを中断して
わからないことを理解する時間を作ってもいいよね、と思いました。

結果を出すことに焦ることなく「急がば回れ」の精神で
あえて遠回りしていろんなことを勉強できることを楽しんでいこうと思います。

開発用マシンはスペック高いものにしよう(笑)

今使ってるノートPC、windows10のメモリ4GBなんです。
元々ブログ書いたり、ネットで調べものしたり、
Office使ったりする用途で買いました。

AWSGCPなどのクラウドサービスをさわったり、
「prgate」や「PyQ」といったブラウザ上でできるプログラミングサービスを
使う分には特に問題なくできるのですけど、
開発するには正直厳しすぎるスペックだなぁと改めて思いました。

やっぱし開発用のマシン、別途買おうかなぁ。。。(笑)

参考

sambatriste.github.io

実際にMavenのコマンドを叩きながら少しずつ理解が進むようになってます。

まだ全部見切れてないんですが、いい機会なので全部やりきって
Maven完全に理解した」と言えるようになろうと思います!