システム開発で思うところ

Javaで主にシステム開発をしながら思うところをツラツラを綴る。主に自分向けのメモ。EE関連の情報が少なく自分自身がそういう情報があったら良いなぁということで他の人の参考になれば幸い

Payara Server と Jakarta EE9 で Hello(他人のふんどし)

EEサーバー(Payara)を使った、簡単なREST Webアプリ。
利用するコードなど、人様のものなので 完全他人のふんどしの自分向けメモです。
ほとんど参考リンクで独学できるので そちらを見るのもいいでしょう。
今回は全くの新規ではなく、既存の雛形から肉付けしながら実装をしていく予定なので それを見越したメモです。
UberJarとかMicroProfileではなく「EEサーバー(フル)」を使います(Batchを使う可能性もあるので)。

目標

  • 開発環境で動かす
  • EEサーバーで動かす*1

環境

  • OS:Lubuntu 20.04(VirtualBox 6.1.22)
  • AdoptOpenJDK 11.0.11+9
  • NetBeans 12.4
  • Payara Server 5.2021.4

JDKを準備

今回は以前ダウンロードをして JAVA_HOMEに設定しているものを そのまま使用
(なので詳細は割愛)

EEサーバーを準備

Community Edition (Payara Server 5.2021.4 (Full)) をダウンロード

www.payara.fish

解凍もしておく。
Linuxなので権限回りもよしなに。
今回は開発用サーバーということ&権限周りの設定が面倒だったのでユーザーフォルダ(~直下)に「paraya5」として解凍しました。

開発環境でデプロイ

ダウンロード

https://netbeans.apache.org/download/nb124/nb124.html から

Apache-NetBeans-12.4-bin-linux-x64.sh

をダウンロード。

sh Apache-NetBeans-12.4-bin-linux-x64.sh

インストーラーを起動。
JDKは上記のものを選択。

www.torutk.com

を参考に見栄えとか日本語化とかをやって最低限の設定は終わり

コードを入手

今回は人様のコードを使用させていただきました。
JJUG CCC(Jakarta REST Examples for JJUG CCC 2021 Spring)で使用されていたコードです。

github.com

を git clone

手癖で、NetBeansからgit cloneではなく、ターミナルからコマンドで実行しました。

プロジェクトを選択

モノレポ構成でいくつかサンプルプロジェクトが格納されているので、どれかを選択。
私は「restapp」を選びました。

サーバーを設定(Payara Server)

Payara Toolsなどのプラグインを入れなくても、サーバー追加で選択肢として「Payara Server」が選べるので、それを選びます。

先のダウンロード&解凍したフォルダを選択。
ユーザー「admin」、パスワードは空白して起動。

実行&起動確認

ビルドして実行
ブラウザで

http://localhost:8080/restapp/api/hello

で起動確認

Payara Serverへデプロイ

 はじめに

  • NetBeansは閉じて、Serverもシャットダウンしていることを前提

実際は、こちらの サーバーへのデプロイをして コードに変更なくても動くのか? Payara Serverでのデプロイって こんな感じかな ?というのを お試しで先にやっています。
その際は warを作りたいプロジェクト配下のフォルダで(対象のpo.xmlがあるフォルダ)で

mvn package

して warファイルを作成しました。

この手順の流れであれば、NetBeansで実行確認した段階でwarファイルは出来ているので、それを使えばよいと思います。
targetフォルダ配下に出来ています。

Payara Serverを起動

{インストールフォルダ}/bin

に移動して

./asadmin start-domain domain1

Linuxなので、「./」をつけて実行してください*2

でサーバーを起動して

http://localhost:4848

以降は、こちらの動画を参考にしていただきます(手抜き)

youtu.be

すでにアプリとして「restapp」が存在しているかもしれません。
これはNetBeansで起動したものです。

動画のデプロイするwarファイルを、先に作成した target配下の restapp-1.0-SNAPSHOT.warを選択します。

  • CDI Development Mode

のチェックをONにします(しないとアプリが動きません)。
コンテキストを変えたい時は「Context Root:」を書き換えます。

admin画面から アプリを起動して

http://localhost:8080/restapp-1.0-SNAPSHOT/api/hello

へアクセスできたらOKです。

参考リンク

www.youtube.com

  • Payara Server と NetBeans による RESTful Web サービスの作成

www.youtube.com

余談

その1

IDEVS Codeにしてみようと試みましたが、試行錯誤の末 諦めました。

その2

Payara Serverにアプリを同じコンテキストのアプリをデプロイしていたので、NetBeansの開発用に起動したアプリと競合した。

./asadmin start-domain domain1

でserver(port:4848)に入って、不要なアプリを削除して競合を解消しました。
コンテキスト名を変えれば解消できたかも、と後から思ったりもしましたが serverでデプロイして動くことを確認することだけ 目標としていたことと、serverにデプロイして確認する(いわゆるIT的な試験環境)は 別環境を作るか 同居させるか その時になったら改めて考えます。

その3

そもそも何をしたかったのか?
雛形となる「初版となるpom.xml」が欲しかった。
Javaに限らず、システムの開発初期環境はハードルが高いものです。
たとえば、それが ここでいうところの「初版となるpom.xml」に相当します。

さいごに

かつて「ベンダーロックインを避けるぞ!」「EOLなどがあった時のために自分で置き換えられるようになるぞ!」「EEサーバーは重いらしいから避けよう」「余計なものが無いっていない方が軽いから良い」とか思って、Tomcat+mavenでコツコツ依存を設定したのですが、正直なところ勉強にはなったけど無駄なことをしていたと思います(苦笑)。
多少馴染があった(使ったことがあった)ので&warをフォルダに突っ込んで起動したらデプロイされるという簡便さを取って Tomcatにしたけれど、素直に金魚本(EE6)と寺田さんのブログに則ってGlassFishを使えばよかったです。
今回のシステムリプレイスでは その辺りの反省も踏まえて Payara Serverを使うことにしました。
技術力もないのにEOL心配とか寝言は寝て言えって話です(泣笑)。

*1:Tomcatからの卒業

*2:これをしなかったので、あれーコマンドが実行できないと、Linux素人の私は少し躓いてしまいました