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)) をダウンロード
解凍もしておく。
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
を参考に見栄えとか日本語化とかをやって最低限の設定は終わり
コードを入手
今回は人様のコードを使用させていただきました。
JJUG CCC(Jakarta REST Examples for JJUG CCC 2021 Spring)で使用されていたコードです。
を 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
でサーバーを起動して
http://localhost:4848
以降は、こちらの動画を参考にしていただきます(手抜き)
すでにアプリとして「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です。
参考リンク
- Payara Server と NetBeans による RESTful Web サービスの作成
余談
その1
IDEをVS 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心配とか寝言は寝て言えって話です(泣笑)。