Eclipseにテスト用のEAR,WARをインポート

# 目的
Githubに用意しているテスト用のEAR,WARをEclipseで使うときの手順を説明します。


# 環境構築

- Eclipse, Liberty

[Eclipse 環境について (Java, Liberty, JavaScript)](https://qiita.com/keniooi/items/b5141ec183f7a52f6427)

をもとにEclipseとLibertyの環境を準備します。Javascriptの構成はここでは必要ありません。
記事が古いですが、導入するときの最新を入れるようにします。tWASを動かすつもりでなければ問題ありません。

この文書作成時の最新は 2023-06でした。

Eclipse IDE for Enterprise Java and Web Developers  

で導入します。


- Db2

[Liberty といろんな DB でDataSourceをためす](https://qiita.com/keniooi/items/17867bc73dbfb991c08f)

を参考に Db2 を docker で起動します。

# Gitレポジトリ

ここでは最近のQiita記事で使用している DB関連のレポジトリを使います。
用意したGitレポジトリをクローンします。Db2起動時に cloneしていますが念のため書いておきます。

```
git clone https://github.com/pdprof/db-connections
cd db-connections/
```

# Db2を起動します。

止めてしまっていた場合は、Db2を起動します。


# Eclipseを起動します。

前の記事通りだと、Eclipseを起動してサーバー作成まではできているので、Eclipseも導入できています。目的毎にWorkspaceを分けた方が良いので、新しいWorkspaceを作成してEclipseを起動します。

ここでは

```
C:/Users/keniooi/eclipse-workspace/db-connection
```

にします。

# JDBC Driverのダウンロード

JDBCドライバをダウンロードします。mavenのレポジトリを利用すると簡単かと思います。
以下はDb2を利用する場合です。

[Db2 JCC 11.5.8.0](https://mvnrepository.com/artifact/com.ibm.db2/jcc/11.5.8.0)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/ca7aa249-6e9b-f9bb-ef0b-54ca987b8d6a.png)

Filesの jar からダウンロードできます。EclipseのWorkspaceにコピーしておくと何の目的で配置したものかわかりやすくなります。

# server.xml の変更

新しいWorkspaceだとLibertyのサーバーは作成されていませんが、このWorkspaceようにLibertyサーバーを作成します。デフォルトで作成された server.xml を

https://github.com/pdprof/db-connections/blob/master/derby-docker/config/server.xml.db2

をもとに書き換えます。環境毎に変更の必要があるのは JDBC DriverのパスとDb2 serverName になります。

C:/Users/keniooi/eclipse-workspace/db-connections にJDBC Driverを配置

```
<fileset dir="C:/Users/keniooi/eclipse-workspace/db-connections" id="Db2Files" includes="*.jar"/>
```

Db2のサーバーはlocalhost （この例では変更の必要はありません）
```
serverName="localhost" portNumber="50000"
```

それ以外はそのままコピーペーストで問題ありません。もとの server.xml を全置換します。


# Workspaceにプロジェクトをインポート

githubにあるEclipseプロジェクトをインポートします。

https://github.com/pdprof/db-connections/tree/master/db.connections 

のディレクトリにプロジェクトがあります。git clone後のディレクトリだと以下の部分です。

```
git clone https://github.com/pdprof/db-connections
cd db-connections/db.connections
```

File > Import...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/088af499-27de-dd2e-7af6-992f13a44f36.png)

General > Existing Projects into Workspace
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/8a784391-8f75-a807-b053-4222c8b46962.png)

Copy projects into workspace にチェックを入れて Finishを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/8a5f07ec-35c3-6ecd-9807-0c2d1bf2d954.png)

ここではGitの更新が目的ではないので、プロジェクトはコピーします。WindowsでFirewallの警告が出た場合は許可します。

db.connections プロジェクトを右クリックし Maven > Upadte project... を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/53924a6a-0490-71fe-5cc5-de2293191831.png)

その後の画面では、そのままOKを押します。Build Pathなどを調整してクラスのコンパイルが出来ていればXML構成ファイルのエラーなどは無視して問題ありません。


# WARを起動してアプリケーションにアクセス

index.jspを選択してサーバーで起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/068497e5-e668-ec2b-558d-066bbd55ead2.png)

起動するLibertyとデプロイするWARを選択して Finishボタンを押します。うまくいけば次の画面が出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/46562d72-1a3e-2bcd-9fde-71ae5679c10d.png)

Simple db access test　でエラーが出たりする場合は、ホスト名やJDBC Driverのパスを確認します。

# トラブルシューティング

運悪くLibrtyのフィーチャー選択がまちがっていると以下のようなエラーが出力されます。

```
[ERROR   ] CWWKF0042E: webprofile-8.0 フィーチャーのフィーチャー定義が見つかりません。  コマンド bin/installUtility install webprofile-8.0 を実行して、当該フィーチャーをインストールしてください。 あるいは、コマンド bin/installUtility install defaultServer を実行して、この構成で参照されるすべてのフィーチャーをインストールすることもできます。
[ERROR   ] CWWKF0042E: eventlogging-1.0 フィーチャーのフィーチャー定義が見つかりません。  コマンド bin/installUtility install eventlogging-1.0 を実行して、当該フィーチャーをインストールしてください。 あるいは、コマンド bin/installUtility install defaultServer を実行して、この構成で参照されるすべてのフィーチャーをインストールすることもできます。
```

リバティーをインストールしたディレクトリで

```
C:\Users\keniooi\wlp\2023-07>set JAVA_HOME=C:\Users\keniooi\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.7.v20230425-1502\jre

C:\Users\keniooi\wlp\2023-07>bin\installUtility install webprofile-8.0
```

のように必要なフィーチャーを導入して対応します。JAVA_HOMEには、Liberty起動に使われているものをしていすると良いです。不足しているフィーチャーごとに installUtility を実行します。


Windows環境でLibertyのログ出力が文字化けしている場合は、General > Workspace で Text file encoding を Default (windows-31j) に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262366/700fd3d9-d095-d42e-6ccc-9716b1d8166d.png)

ファイルのエンコードも変わってしまうので、UTF-8のままが良い場合はLibertyのログ出力を英語にするなどして対応します。

# まとめ

アプリケーションや環境を一から作成すると大変ですが、動くと分かっている構成から自分がしたい動作に変更するのであれば、それほどの作業の必要なく対応ができます。その手助けになるように文書を書いてみました。