この投稿は"Jakarta EE+Payara server+NetBeansで開発しよう!"の第2回です
JakartaEEのセットアップは、JDK、IDE、アプリケーションサーバーなど、いろいろ準備が必要で、なんといっても手間がかかります。そこで、ふと考えました。「あらかじめみんな集めてワンセットにしておけばどうだろう」と。そして、いろいろ試行錯誤して、作成してみたのが"JET (JakartaEE Toolkit)"です(今回は、Windows用ですが、Mac用もすぐに何とかする予定です)。可能な限りの設定を済ませてあるので、ダウンロードして解凍すると、それから5分以内にJakartEE開発を始められます。
JETでは、Zipを解凍するだけでNetBeansが動きます(JDKは組み込んでいるので、インストール不要)。日本語化プラグインを入れてあるので、日本語化も済んでいます。簡単なサーバー連携の設定をするだけで、Payaraサーバーが使えます(Payara5を同梱しています)。Payara Serverには、MySQLとPostgreSQL、H2などのデータベースドライバを登録済みで、JDBCコネクションプールとJDBCリソース(データソース)も最初から登録されています。つまり、面倒なデータベース設定は不要で、すぐに使える状態になっています。
また、NetBeansには、JSF用の新規Mavenプロジェクトを生成するBuilderプロジェクトが付いています(REST用には、元から付いているアーキタイプを使って、[新規プロジェクト]⇒[Maven]⇒[Webプロジェクト]で問題なし)。すぐに新規Maven-JSFプロジェクトを作成して、JakartaEE開発ができます。
さらに、やはりアーキタイプでプロジェクトを生成したいという人のために、オリジナルなアーキタイプも作成しました。NetBeansプロジェクトファイルの形で添付しています。mvn clean install コマンドを実行することで、jakarta-ee-jsfアーキタイプを使用できます。後日、解説を掲載する予定ですから、それを読むと自分で改造もできますよ。
ダウンロード:JakartaEE Toolkit ver 0.90
ダウンロード先は「わかりやすいJavaEE」のサポートウェブです。ダウンロードしたファイルの中に、簡単な使い方が入っているので、それを見て使ってみてください。また、「わかりやすいJavaEE」の例題(内容はEE7)をMavenプロジェクトに直したものもダウンロードできます。これらを試すのもよいでしょう。
####◆データベースシステムは・・・
H2データベース(Payaraのデフォルトのデータベース)は、Payara付属のバッチファイルから起動できます。MySQLやPostgrSQLなどは、それぞれインストールする必要があります。でも、開発用ですからね。いちいちインストールするのはやめて、Dockerを使う方が格段に簡単です。そもそも、インストール作業なんてないのですから。コマンドを一行タイプするだけで、データベースが使えるようになります。
####◆Windows home でもDocker Desktopが動く
ところで、DockerをWindowsで動かすには、Hyper-Vが必要なので、Winodow10 Proが必要です。homeでは動きません。Oracleが作ったツールで代用できますが、期待通りの働きをしてくれないことがあり、フラストレーションがたまります。
ところがです。Windows10 homeの次のパージョンアップから、home版でもDockerが動くようになります!
●Docker Desktop for Windows Home is here!
なお、今すぐ使ってみたい場合は、Windows Insiderプログラムに参加してOSを更新し、Docker Desktop Edge 2.2.2.0をインストールすればOKです。
これで、ほとんどのパソコンにDockerを使う環境が「ある」と前提して、話を進めることができるようになりました。自宅のWindowsがProではなく、homeだという人はかなりいるはず。本当に朗報でした。
#Dockerを使ってMySQLを動かす
そもそもDockerとは何か、ものすごく簡単にいうと**「仮想Linuxマシン」製造機**です。ポンポン作れます。しかも、最初からいろいろなサーバーセットが用意してあるという便利さ。コマンドを1行タイプするだけで、Dockerハブから自動的にダウンロードして、セットアップしてくれます。
大体、サーバーを利用するだけなら、Linuxの知識すら不要です。Dockerで製造した仮想Linuxマシンの中のサーバーは、"localhost"として、自分のパソコンにインストールしたサーバーと同じに使えます。この簡単さはものすごくインパクトがありますね。
###◆どうしたらDockerを使えるか
①Docker Desktop for Windowsをダウンロードする
②ダウンロードファイルをダブルクリックしてインストールする
③デスクトップにDocker Desktopアイコンができるのでダブルクリックで起動する
###◆そして、MySQLデータベースサーバーを使えるようにするには
●Windows Power Shellを起動して、次のコマンドをタイプする
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=mysql8 -d -p 3306:3306 mysql:latest
これでだけで、MySQLデータベースが起動した状態になります!
なお、rootパスワードは、"mysql8"としておくと、JETの使用が簡単になります。違うものにした場合、Payara Serverに登録したJDBCコネクションプールで、Password属性を変更しなくてはいけません(Payaraの管理コンソールで、「JDBC接続プール」の中のmydb_poolを開き、「追加プロパティ」タブをクリックすると、画面上で変更できます)。
次のコマンドで、起動確認ができます。簡単ですね!
docker ps
なお、停止は
docker stop mysql8
起動は
docker start mysql8
です。
Dockerコマンドの詳細は、@wMETAwさんのDocker コマンドチートシートなどを参考にするといいでしょう。
###◆スキーマを作成する
データベースを使うには、スキーマが必要です。つまり、データベースの構成を定義して、いろいろなテーブルや関係を入れることができるようにします。これはSQLコマンドで簡単に実行できます。mydbという名前でスキーマを作成しておくと、JETの利用が簡単になります。違った名前にすると、Payara Serverに登録してある「JDBC接続プール」で、DatabaseName属性の変更が必要になります(変更方法はパスワードと同じ)。
①mysql8コンテナのベースになっている仮想Liuxシステムで、
bashシェル(コマンドプロンプト的なもの)を起動する
docker exec -it mysql8 bash
②bashプロンプトからMySQLモニタ(MySQLにSQLを発行できる)を起動する
mysql -u root -pmysql8
※pとmysql8は離さない
③スキーマmydbを作成するためのSQLを発行した後、元の画面に戻る
CREATE SCHEMA
mydb DEFAULT CHARACTER SET utf8 ;
※exit; をタイプしてbashに戻り、exitをタイプしてPowerShellに戻る
#DockerとNetBeansの連携
MySQLが起動していることを、NetBeansから確認し、さらに停止したり、起動したりできます。
<手順>
①タスクバーで、Dockerアイコンをクリックする
②ポップアップメニューで[Settigs]を選択する
③[Expose daemon on tcp://localhost:2375 without TLS]にチェックを入れる
④[Applay & Restart]を押す
<注意>念のために、②のメニューで、もう一度[Restart...]をクリックすると確実です
⑤(起動していなければ)NetBeansを起動する
⑥[サービス]タブの[Docker]を右ボタンでクリックして、[Dockerの追加...]を選ぶ
⑦[接続をテスト]で接続を確認し、[終了]を押す
⑧ローカルDockerのノードを展開する
コンテナにあるMySQLのノードに緑の三角が付いていれば起動中です。ノードをマウスの右ボタンでクリックして、ポップアップメニューから停止や起動もできます。
####◆NetBeansからmydbデータベースを操作できるようにする
テーブルを確認したり、SQLを発行したりできるようになります
①[サービス]タブの[ドライバ]で、[MySQL(・・・)]を右クリックして接続を選ぶ
②[追加]ボタンを押してMySQL用のドライバを追加する(ドライバはjakartaフォルダに入っている)
Jakarta/jdbc-driver フォルダから、mysql-connector-java-8.0.19.jarを指定する
④データベース名にmydb、パスワードにmysql8と入力し、パスワードを記憶するにチェックを入れる
最後に[次へ」のボタンを押す
さらに、この次の画面ではなにもせず、[次へ]のボタンを押す
⑥mydbが表示される。
※各ノードの上で右ボタンをクリックすると、内容を見たりSQLを発行したりできます
#まとめ
JET(JakartaEE Toolkit)とDockerを使って、すばやくJakartaEEの開発・学習環境を作る方法を解説しました。JETでは、NetBeansとPayaraの連携をするだけです。そして、Dockerがすでに入っていれば、データベース準備も一瞬ですから、5分もあればJakartaEE開発に取り掛かれます。6月にはJakartEE9が公開され、そしていよいよ年末には期待のJakartaEE10が公開予定です。JakartaEE、始めるにはちょうどよい機会ではないでしょうか。