oracle,tomcatでWebAPサーバとDBサーバを構築して適当に遊ぶ環境を作る（簡易アプリ開発からサーバデプロイまで）

#<b>この記事の目的と範囲
<a href="https://qiita.com/k47320/items/bc605d440695fa32c028">前回</a>の続きです。前回は環境を構築しましたが、今回はその環境を使ってDB接続する簡単なWebアプリの動作確認をしていきます

#<b>環境構成（再掲+追記）
サーバHW：中古のThinkPadX201(SSD:320GB/mem:8GBに改造)
OS：CentOS7.2
IDE：NetBeans8.2（※Eclipseでもやることは一緒です）
言語、フレームワークなど：今回はJava+JSFでやってみます。
 
※以下各章に入りますが、前回記事からの連番となっています。
#4.開発環境の設定
##4.1 Tomcatのインストール
前回はサーバ側に入れましたが、開発にあたりTomcatを開発端末に入れる必要があります。前回のURLの中にexeファイルがあるので、それをDLしてインストールしてください。
 
##4.2 NetBeans設定
NetBeansをDL、インストールしてください。場所は以下(JavaEEというやつ)
<a href="https://netbeans.org/downloads/?pagelang=ja">https://netbeans.org/downloads/?pagelang=ja</a>
 
インストール後にNetBeansを起動したら「ファイル」→「新規プロジェクト」を選択します。その後出てくるダイアログでカテゴリ「Java Web」プロジェクトで「Webアプリケーション」を選択して「次へ」を押します。
プロジェクト名とかフォルダとかありますが、ここはお好きなように。諸々設定後「次へ」を押します。
サーバは「Apache TomcatまたはTomEE」というものを選択し、その下にあるJavaEEバージョンは「Java EE 7 Web」を選択します。すべて終わったら「次へ」を押します
フレームワークは「JavaServer Faces」にチェックを入れてください。終わったら「終了」を押します。以下のような画面になっていればとりあえずOKです
<img class="hatena-fotolife" title="f:id:hatek47320:20171225222718p:plain" src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatek47320/20171225/20171225222718.png" alt="f:id:hatek47320:20171225222718p:plain" />
 
###4.3 oracle JDBCドライバの設定
Javaを利用してOracleのDBに接続する場合に必要なライブラリを設定します。
この時に利用するのがoracle jdbc driverというものです。oracleとの接続やDBへのSQL発行処理などのAPIが提供されています。
以下から、oracle JDBCドライバを落とします。ojdbc8.jarというファイルをダウンロードしてください
<a href="http://www.oracle.com/technetwork/database/features/jdbc/jdbc-ucp-122-3110062.html">12.2.0.1 - JDBC and UCP Download Page</a>
ダウンロードしたら先ほど作成したNetBeansのプロジェクトにjarファイルを組み込みます。１．１最後の画像左側にあるWebApplication1にぶら下がっているフォルダ群から「ライブラリ」を右クリックし「JAR/フォルダの追加」を選択します。出現したダイアログで先ほどダウンロードしたojdbc8.jarを指定し「開く」ボタンを押します。
すると、ライブラリフォルダに「ojdbc8.jar」が追加されているはずです。
さて、これでようやくプログラミングフェーズに入ることができます。
 
##5 Webアプリケーション実装
今回作成するアプリケーションはDBの取得結果を画面に表示する、という簡単なものです。処理概要は以下のような具合です。
<img class="hatena-fotolife" title="f:id:hatek47320:20171225232920p:plain" src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatek47320/20171225/20171225232920.png" alt="f:id:hatek47320:20171225232920p:plain" />
また、今回はJSFやSQLの実装、ローカル環境へのDB作成などの基本的なところについては説明を省きます（環境をメインテーマとしているため）。実装方式やSQL文の入門については申し訳ないですが、他サイトや書籍を参考にしてください。
###5.1 データ投入
今回はデータを取得する処理のため、予め先ほどインストールしたoracle DBにデータを投入します。
oracleが立ち上がっていない方は、Linuxに戻っていただいて
'''sqlplus /nolog
conn / as sysdba
STARTUP
'''
と入力して、oracleを立ち上げてください。
さて、まずはDBにテーブルを作成します。sqlplusに入るところから始めます
'''
sqlplus /nolog
conn (user)/(password)@接続識別子 #oracleインストール時に設定したものを使ってください
'''
DBに接続しました。と表示が出たら成功です。
次に、テーブルを追加し、データを投入します
'''
create table books (ID int, Name varchar(100) Author varchar(100));
insert into books value (1,吾輩は猫である,夏目漱石);
insert into books value (2,人間失格,太宰治);
'''
念のため確認します
'''
select * from books;
'''
これで上記で投入したデータが表示されればOKです。

###5.2 Java側の実装
今回はJava8とJSFを使っていきます。ソースはこちら<a href="https://github.com/gitk47320/WebApplication1">GitHub - gitk47320/WebApplication1</a>
Javaの中でDB接続をしている箇所がありますが、ここは環境や設定により異なりますので、適宜変更してください。なお、通常はこのようにJavaのソース内に持つべきではありません。
大体このような情報は定義ファイルとして外出しします。（別環境にアプリを移行するときにいちいちJavaソース修正→ビルドが必要になるためです）

NetBeans上でアプリを動作させて以下のように表示されればOKです。（URLはlocalhost:8080/WebApplication1）なお、プロジェクト作成の時にWebApplication1としなかった人は、この部分はプロジェクト名に適宜読み替えてください。
<img class="hatena-fotolife" title="f:id:hatek47320:20171225231711p:plain" src="https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatek47320/20171225/20171225231711.png" alt="f:id:hatek47320:20171225231711p:plain" />

##6 サーバへのデプロイ
前回構築した環境にアプリをデプロイして、動かしてみます。上記見直した後、ビルドします。画面上部「実行」→「プロジェクト～～をビルド」を選択します
その後（プロジェクト作成時指定の作業ディレクトリ）/WebApplication1/distを覗くとwarという拡張子のファイルがあります。これをサーバに突っ込みます。突っ込む場所はtomcatのインストールフォルダ内のwebappsというフォルダになります。前回構築した環境という前提であれば「/opt/tomcat/apache-tomcat-9.0.0.M27/webapps」です。
この場所でwarファイルを解凍します。拡張子は違えどただのzipファイルなので、
unzip WebApplication.war
で解凍できます。
 
その後（サーバのIPアドレス）:8080/WebApplication1にブラウザ経由でアクセスして、書籍一覧が表示されればOKです。

#最後に
大分説明を省いてしまいました。環境構築だけとか、デプロイだけとかって記事は山ほど見ますが、一気通貫で情報がまとまっているサイトってないなぁと思って記事を書いた次第です。あと今回はあくまでサンプル的なものなので、色々と突っ込みどころ満載となってしまいました。不明点などあればコメントをお願いします。