Liberty環境でサーブレットの作成

#はじめに
Liberty環境でサーブレットが動作できるように構成します。

#Derbyのダウンロード
Libertyから使用するDerbyをダウンロードして db-derby-10.14.2.0-lib.zip
[liberty_install_dir]/usr/servers/[server_name]/derby のディレクトリに jar ファイルを展開します。

[Apache Derby: Downloads](https://db.apache.org/derby/derby_downloads.html)

```console:dir
C:\opt\wlp\usr\servers\server1\derby\lib>dir
...
 C:\opt\wlp\usr\servers\server1\derby\lib のディレクトリ

2018/06/14  23:33    <DIR>          .
2018/06/14  23:33    <DIR>          ..
2018/06/14  23:33         3,232,770 derby.jar
2018/06/14  23:33             1,490 derby.war
2018/06/14  23:33           588,394 derbyclient.jar
2018/06/14  23:33            94,559 derbyLocale_cs.jar
2018/06/14  23:33           112,080 derbyLocale_de_DE.jar
2018/06/14  23:33           105,743 derbyLocale_es.jar
...
```

#Libertyのserver.xml
Libertyの構成はserver.xmlを編集して行います。デフォルトで作成されたものだと SSL鍵のパスワードと管理ユーザーが未指定です。その指定とセッションDBにDerbyを指定したものが以下になります。server.xmlの場所は server.config.dir で

server.config.dir ： [liberty_install_dir]/usr/servers/[server_name]

になります。

```xml:server.xml
<server description="new server">
    <featureManager>
      <feature>javaee-7.0</feature>
      <feature>sessionDatabase-1.0</feature>
      <feature>localConnector-1.0</feature>
    </featureManager>

    <keyStore password="password"/> 
    <basicRegistry id="basic" realm="BasicRealm">
        <user name="wasadmin" password="password"/>
    </basicRegistry>
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
    <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS"/>
    
    <fileset id="DerbyFiles" includes="*.jar" dir="${server.config.dir}/derby/lib"/>
    <library id="DerbyLib" filesetRef="DerbyFiles"/>
    <jdbcDriver id="DerbyDriver" libraryRef="DerbyLib"/>

    <dataSource id="SessionDS" jdbcDriverRef="DerbyDriver" jndiName="jdbc/sessions">
    <properties.derby.embedded
            databaseName="${server.config.dir}/derby/sessiondb" createDatabase="create" />
    </dataSource>
    
    <applicationManager autoExpand="true"/>
</server>

```

#Libertyの起動
Eclipseから起動させるときにはきになりませんが、コマンドラインから実行するときには以下の設定が必要です。server1の起動ができます。

```console:cmd
set JAVA_HOME=C:\opt\eclipseJ9\ibm_sdk80
set PATH=C:\opt\wlp\bin;%PATH%
server start server1
サーバー server1 を始動中です。
サーバー server1 が始動しました。

server stop server1
サーバー server1 を停止中です。
サーバー server1 は停止しました。
```

#Eclipseでサーブレット作成

File > New > Web Project で Web Projectを作成します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/52908488-ae14-6475-cee9-6366436d9c6b.png)

Servlet > New > Servlet で作成します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/886f5b30-3c9d-2314-a16c-5a7cf05ee271.png)

Servlet > Run As > Run On Server でアプリケーションを開始してサーブレットにアクセスします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/262366/f0340ea7-4689-c4c1-91ff-71ac4182593d.png)

この手順を覚えていると簡単なテストがすぐにできるようになります。

#参考
[Liberty のセッション・パーシスタンスの構成](https://www.ibm.com/support/knowledgecenter/ja/SS7K4U_liberty/com.ibm.websphere.wlp.zseries.doc/ae/twlp_admin_session_persistence.html)
[Liberty での関連データベース接続の構成](https://www.ibm.com/support/knowledgecenter/ja/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/twlp_dep_configuring_ds.html)
[サーバー・コマンド・オプション](https://www.ibm.com/support/knowledgecenter/ja/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/rwlp_command_server.html)