Open LibertyをMacで動かしてみる


# はじめに
[前回](https://qiita.com/rinaxsumomo/items/daf97ca027e735223824)はDocker HubからOpen Libertyイメージをpullしてrunしてみましたが、そもそもまずローカル環境で動かしてなかったということでメモレベルですが書き起こしてみました。Eclipseにも開発ツールのプラグインを入れて手元の開発環境を整えます。

# 前提環境
以下の環境を使っています。

* MacBook Air 使用
	* OS: OS X El Capitan
	* Java: Oracle Java 1.8.0_151
	* Eclipse: Oxygen

# 手順
## Open Libertyを入れる
1. 前提となるJavaの確認をします。ここではローカル開発環境としてMacを使用しているため、Oracle Java 8が入っていることが確認できます（IBM JDKは現時点Macに対応していません。Eclipse OpenJ9もやはりMac対応していません。MacどころかWindowsにも対応してなくて、LinuxとAIXのみのようです。。）
![Kobito.6fKqCt.png](https://qiita-image-store.s3.amazonaws.com/0/129662/fb42bf88-9864-6549-6235-287d3438036b.png "Kobito.6fKqCt.png")

2. OpenLiberty.ioからZipファイルを任意のディレクトリにダウンロードします。
![Kobito.Fjr2sd.png](https://qiita-image-store.s3.amazonaws.com/0/129662/3deac344-b477-1985-7c6e-e9a3acc54a86.png "Kobito.Fjr2sd.png")


3. DLしたディレクトリに移動し、ダウンロードしたZipファイル（ここではopenliberty-17.0.0.3.zip）を展開します。展開したディレクトリを確認すると、wlpというディレクトリができ、その中に展開されていることがわかります。
![Kobito.WsFct0.png](https://qiita-image-store.s3.amazonaws.com/0/129662/754eab66-caba-4392-b61b-ddc206179fa6.png "Kobito.WsFct0.png")

4. ここで製品版のWebSphere Libertyとはどう違うのかを見てみました。最初にわかるのがbinディレクトリを見ると、製品版には存在するコマンドがいくつかありません。たとえばfeatureManagerとinstallUtilityといったフィーチャーを追加拡張するためのコマンド、configUtilityというWebSphere Liberty Repository から構成スニペットをダウンロードしてくるコマンド、IBM Cloudとの連携のためのbluemixUtilityコマンドが入っていません。ただしIBM Cloudとの連携は、Eclipseプラグインの開発者ツールを入れることで可能になるようです。
![Kobito.Wf1NOk.png](https://qiita-image-store.s3.amazonaws.com/0/129662/0914c355-fc25-b31c-0970-cc2e6c9de709.png "Kobito.Wf1NOk.png")

5. ちなみにこちらが製品版のbinディレクトリです。管理機能の拡張をしたいなどの話になったら製品版を使ってください、という感じなのでしょう。他にlibディレクトリを見ると入ってるライブラリが一部異なってたりしますが、ここでは割愛します。
![Kobito.yYeip2.png](https://qiita-image-store.s3.amazonaws.com/0/129662/714bea36-6d3f-2a2f-4660-b4ed95ca948a.png "Kobito.yYeip2.png")

6. ランタイムとなるサーバーを作成していきます。以下のコマンドでほぼ瞬時に作成が完了します。

```server
./sever create server1
```
※ なお「Class JavaLaunchHelper is implemented in both… One of the two will be used. Which one is undefined.」という警告が出るときがありますが、これはJDK 1.7.0_45で発見されたバグで、JDK1.8.152で修正されているようです。詳細は[こちら](https://stackoverflow.com/questions/43003012/class-javalaunchhelper-is-implemented-in-two-places)をご参照ください。当環境では諸事情により、JDK1.8.0_151を使用しているためこの警告が出ていますが、問題なく進めます。
![Kobito.cr6I6E.png](https://qiita-image-store.s3.amazonaws.com/0/129662/2180bef7-c1b9-a6e3-57eb-9468014961b8.png "Kobito.cr6I6E.png")

7.usr/servers/server1ディレクトリができるので、server.xmlを確認します。デフォルトではJSP 2.3に対応したjsp-2.3フィーチャーが有効化され、エンドポイントのポートとしてhttpは9080、httpsは9443が指定されています。その他、war/earファイルを自動展開機能も有効化されています。
![Kobito.5FcFgf.png](https://qiita-image-store.s3.amazonaws.com/0/129662/fd3dbfd5-ae02-582f-7f43-c371719732fa.png "Kobito.5FcFgf.png")

8.server1を起動してみます。

```server
./server start server1
```

9.JSPが有効になっていますし、とりあえずなんでもいいから動かすスタンスでHello World系を出してみます。/server1ディレクトリの中にdropinsという開発・テスト環境向けな、アプリケーションを追加・更新・削除などの変更が行われると自動的に反映される仕組みのディレクトリがあります。そこでtest.warディレクトリを作成し、test.warディレクトリに移動してから、サンプルとしてtest.jspを作成します。viで書いちゃったので、もはやEclipseすら使ってません。。お決まりのコードなので省略します。
![Kobito.6uGl28.png](https://qiita-image-store.s3.amazonaws.com/0/129662/b40035ce-9010-9013-471f-7b259429574b.png "Kobito.6uGl28.png")


10.ブラウザからアクセスすると、ローカルホストの9080ポートにて作成したJSPが動いていることがわかります。とりあえずOpen Libertyの稼働が確認できました。
![Kobito.MdAeGn.png](https://qiita-image-store.s3.amazonaws.com/0/129662/ebd6e4ab-4abe-baae-5fde-8816d11fef46.png "Kobito.MdAeGn.png")


11.一旦サーバーを止めておきます。

```server
./server stop server1
```

## Eclipseにプラグインを入れる
1. Eclipseに開発者ツールであるIBM Liberty Developer Tool for Oxgenをインストールし構成を確認します。Eclipse Marketplaceを開いて「liberty」で検索すると以下のような結果となるので選択してインストールします。
![Kobito.QOV38b.png](https://qiita-image-store.s3.amazonaws.com/0/129662/3adb79e0-7d3e-796d-e8b2-cf7affe6d419.png "Kobito.QOV38b.png")

2. 必要なフィーチャーを選択してConfirmをクリックしてインストールを進めます。最低限「WebSphere Application Server Liberty Tools」があれば事足りますが、ここでは全部入れています。
![Kobito.DEZKOn.png](https://qiita-image-store.s3.amazonaws.com/0/129662/95966d61-9b69-3abb-2236-7c462318db31.png "Kobito.DEZKOn.png")

3. ライセンスに同意して進み、インストールが終わったらEclipseを再起動して完了です。
4. Eclipse上でOpen Libertyサーバーを構成します。作成済みのserver1を使って構成します。まずservers画面で右クリックしNew>Serverで新規作成します。
![Kobito.elzdYr.png](https://qiita-image-store.s3.amazonaws.com/0/129662/9326d984-80ee-6a09-89fc-49fda48de216.png "Kobito.elzdYr.png")


5. 新しいサーバーを定義します。server typeとしてWebSphere Application Server Libertyを選択し、Hostname、Server nameを入力し、Server runtime environmentのAddをクリックしてOpen Libertyの情報を追加します。
![Kobito.Uye23v.png](https://qiita-image-store.s3.amazonaws.com/0/129662/16560a29-dde3-aba1-77dc-315388568620.png "Kobito.Uye23v.png")


6. NameにOpen Liberty（適当）、導入したインストール・パスを入力し、JREはデフォルトのままでFinishをクリックします。
![Kobito.Mn9uM6.png](https://qiita-image-store.s3.amazonaws.com/0/129662/1eafb894-e9ce-cc1f-76a3-1050f0919419.png "Kobito.Mn9uM6.png")

7. 元の画面に戻り、Server runtime environmentに追加したOpen Libertyがセットされていることを確認してNextをクリックします。
![Kobito.6HT9xS.png](https://qiita-image-store.s3.amazonaws.com/0/129662/956490a5-7135-cab9-2485-05f87870496f.png "Kobito.6HT9xS.png")

8. 作成済みのserver1を選択してFinishをクリックします
![Kobito.6hWx3u.png](https://qiita-image-store.s3.amazonaws.com/0/129662/457a31da-55de-4b43-583f-c8829a0cdb99.png "Kobito.6hWx3u.png")

9. サーバー一覧にOpen Libertyが作成されました。
![Kobito.KjqSX2.png](https://qiita-image-store.s3.amazonaws.com/0/129662/74861fa7-1e55-4335-07c3-0da5ff790f37.png "Kobito.KjqSX2.png")


10. エクスプローラーにserver.xmlや、作成したtest.jspが読み込まれていることが確認できます。
![Kobito.m6dZ4S.png](https://qiita-image-store.s3.amazonaws.com/0/129662/997e9b72-571b-cc14-96a7-ea5450d2f7cf.png "Kobito.m6dZ4S.png")


11. それではserver1を開始します。サーバー名を右クリックしてStartをクリックします。
![Kobito.TG5wXk.png](https://qiita-image-store.s3.amazonaws.com/0/129662/596cc65f-e833-3278-1615-aa07edba8094.png "Kobito.TG5wXk.png")


12. 前述の警告が出ますが、問題なくserver1が起動します。またtest.jspのサンプル・アプリケーションもlocalhostで起動したことがわかります。
![Kobito.XbPoM3.png](https://qiita-image-store.s3.amazonaws.com/0/129662/f772370b-49a5-ad39-c902-5c7422946c0e.png "Kobito.XbPoM3.png")


13. Eclipse内部ブラウザからアクセスして稼働確認します。開発ツールとランタイムを合わせてこれでローカル開発環境の完成です。
![Kobito.Mj4XWq.png](https://qiita-image-store.s3.amazonaws.com/0/129662/eaa6febf-1a8d-00af-fdd5-9fed60a2d29e.png "Kobito.Mj4XWq.png")


 
# まとめ
以上でローカルMacBookで開発環境を整えました。

# 参考資料
[1] OpenLiberty.io
https://openliberty.io/
[2] GitHub: OpenLiberty Project
https://github.com/OpenLiberty
[3] Docker Hub
https://hub.docker.com/r/openliberty/open-liberty/
[4] Stack Overflow: Open Libertyのタグページ
https://stackoverflow.com/questions/tagged/open-liberty
[5] WASdev.net
https://developer.ibm.com/wasdev/
[6] Eclipse Open J9
https://www.eclipse.org/openj9/