開発環境を整備しましょう

メニュー

初めに

 Web アプリケーションの開発環境を整備するには、多くの作業が必要とされます。しかしながら、要領よくまとまった情報はみあたりませんでした。そこで、 NetBeans + GlassFish + SQL Server という環境限定ではありますが、記述したいと思います。実はデータベースに Oracle を使用した場合と操作結果に違いがあることを確認しています。しかし、Java による Web アプリケーションの情報ついては、Oracle の方が、 SQL Server より豊富であり、ネット検索でも回答にたどり着きやすいと思います。

 しかしデータベースに SQL Server を選択すると、格段に情報が少なるなるように思います。これは、Web アプリケーションを ASP.NET で構築しようとすると、 Oracle に関する情報が少なくなるのと裏腹のように思います。

NetBeans の整備

 最初に行うべき、そしてなかなか情報がみつからない作業は、 NetBeans から SQL Server を利用可能な状態に設定する作業です。

ドライバの登録


 最初に行うのは、 Java から SQL Server に接続する際に使用する JDBC ドライバを登録することです。"必要なソフトウェアを入手しましょう"の章で入手したドライバ sqljdbc42.jar のあるフォルダーを確認してください。

 画面左上のパネルで、「プロジェクト」「ファイル」「サービス」の3つのタグから「サービス」を選択してください。そのパネルから「データベース」→「ドライバ」を選択し、「ドライバ」を選択状態にしたマウスの右ボタンメニューから「新規ドライバ」を選択します。

 左の画面で「ドライバ」の下に表示されているものは、すでに登録済みのドライバになります。



 「追加」ボタンをクリックして、登録したいドライバのファイルを選択します。

 ここではファイル名の一部をマスキングしています。


 ドライバのファイルを指定すると、ドライバ・クラスと名前は自動的に表示されますので、そのまま「OK」をクリックすればよいでしょう。


接続の登録


 さきほど登録したドライバを選択した状態で、マウスの右ボタンメニューから「接続」を選択します。



 必要な項目を入力して、「接続をテスト」をクリックします。入力した値が正しければ、データベースに接続できます。この接続をスムーズに実行するには、データベースを構築しておくことは当然として、SQL Server Management Studio を使用してデータベースに接続できることを確認しておくことをお勧めします。

 データベースへの接続を確認後、「次へ」をクリックします。

 私が設定したのは、ホスト名:localhost, ポート番号:1433、データベース名:KnowledgeDB、インスタンス名:SQLEXPRES、ユーザ名:sa、パスワード:sa のパスワード になります。必要な項目を入力する毎に、 JDBC URL の文字列が自動的に作られます。ここで必要な値は、ご自分でデータベースを構築された方であれば明らかでしょう。



 つぎは、表示させるデータベースのスキーマを選択します。新規に登録したデータベースの既定のスキーマは「dbo」ですから、コンボボックスから該当する項目を選択し、「次へ」をクリックします。



 最後に、登録する接続に名前を付けます。ここまでの作業で入力した値から、名前の候補が自動的に表示されています。この名前を適宜修正するなり、分かりやすい名前をつけてください。そして、「終了」をクリックします。

 今登録した接続を展開して、表を確認してください。データベースに存在するテーブルが確認できます。


接続プールの登録

 今までの作業は、「プロジェクト」「ファイル」「サービス」の3つのタグの内、「サービス」タグを選択した状態で行いました。これからは、「プロジェクト」タグを選択した状態で行います。つまりは、WEB アプリケーション用のプロジェクトを作成する必要があります。「NetBeans で Web アプリケーションを作ってみよう」の章で空っぽのプロジェクトを作成しました。それと同じ手順で、「KnowledgeDB」という名前のプロジェクトを作成しましょう。そのプロジェクトにいろいろの機能を追加することで、目標の Web アプリケーションを完成させることにします。
 これ以降の作業は「KnowledgeDB」プロジェクトがすでに定義されていることを前提とします。

 新規ファイルの追加ダイアログの「カテゴリ」で「GlassFish」を選択し、「ファイル・タイプ」で「JDBC接続プール」を選択して、「次へ」<ボタンをクリックします。/p>

 「JDBC接続プール名」に分かりやすい名前を入力します。ここでは、「knowledgeDBPool」としました。「既存の接続から抽出」を選択して、前章で登録した接続をコンボボックスから選択後、「次へ」ボタンをクリックします。


 「リソースの型」から「ConnectionPoolDataSource」を選択し、「終了」ボタンをクリックします。次の画面で表示される内容を確認して、「終了」ボタンをクリックします。

 ここで登録した情報は、 KnowledgeDB プロジェクトの「構成ファイル」フォルダーの「glassfish-resources.xml」に記録されます。この作業を繰り返した場合、同じファイルに情報が追加されます。何もない状態に戻したい場合は、このファイルの内容を直接編集するか、削除する必要があります。

JNDI の登録

 JNDI はプログラムから各種リソースにアクセスするための名前になります。データベースの接続情報に名前を付けて、プログラムからこの場合は NetBeans からデータベースを操作する際に使用します。

 JNDI の登録は、登録したいプロジェクトを選択状態にしたうえで、マウスの右ボタンメニューから「新規」→「その他」を選択します。

 表示されるダイアログで、「カテゴリ」で「GlassFish」を「ファイル・タイプ」で「JDBCリソース」を選択して、「次へ」をクリックします。


 「既存のJDBC接続プールを使用」を選択し、コンボボックスから前章で登録した接続プールを選択します。「JNDI名」を適切な名前に変更します。自由に命名できますが、慣習として「jdbc/」で始まる文字列を使用することが多いようです。またこの名前は全プロジェクトで一意の名前である必要があります。その後、「終了」ボタンをクリックします。

 ここで登録した情報は、 KnowledgeDB プロジェクトの「構成ファイル」フォルダーの「glassfish-resources.xml」に記録されます。何もない状態に戻したい場合は、このファイルの内容を直接編集するか、削除する必要があります。


持続性ユニットの登録

 新規登録ダイアログの「カテゴリ」で「持続性」を選択し、「ファイル・タイプ」で「持続性ユニット」を選択して、「次へ」をクリックします。


 「持続性ユニット名」は初期値のまま、「データ・ソース」は前章で登録した JNDI 名を選択して、「終了」ボタンをクリックします。

 ここで登録した情報は、 KnowledgeDB プロジェクトの「構成ファイル」フォルダーの「persistence.xml」に記録されます。何もない状態に戻したい場合は、このファイルの内容を直接編集するか、削除する必要があります。


GlassFish の整備

 以下の作業を始める前に、 GlassFish をインストールしたフォルダーにあるの「lib」フォルダーに SQL Server の JDBCドライバファイル(sqljdbc42.jar)をコピーしておきましょう。私の場合、コピー先は「c:\glassfish4\glassfish\lib」になります。

管理画面の起動

 GlassFish の各種設定は専用の管理画面から行います。その管理画面を起動するには、最初に GlassFish サーバを起動しておく必要があります。GlassFish サーバを起動するには、主に2つの方法があります。1つは NetBeans から起動する方法。2つ目は専用のコマンドを使用して起動する方法です。


  NetBeans を使用して起動する方法です。通常プログラム開発中は、明示的に GlassFish サーバを操作することはまず無いと思います。GlassFish サーバが停止している状態で、 NetBeans からサーバの利用が必要な操作を行った場合、 GlassFish サーバが自動的に起動する処理が行われるためです。しかしながら、 GlassFish サーバの起動や停止を明示的に NetBeans から操作することができます。

 画面左上のペインで「サービス」を選択し、ついで「サーバ」→「GlassFish Server」の順に選択します。次にマウスの右ボタンメニューにある「起動/再起動/停止」を選択します。今 GlassFish サーバが動作中かどうかで選べる項目が変わってきます。



  NetBeans から GlassFish サーバを操作できる画面がもう一つあります。画面右下の「出力」ペインで「GlassFish Server」を選択し、左端にあるボタンから操作できます。ボタンの上にマウスをのせるとメッセージが表示されますから参考にしてください。


 次は専用のコマンドを使用する場合です。 GlassFish サーバの運用環境では、このやり方を採用することになります。そのコマンドは GlassFish をインストールしたフォルダーの bin フォルダーにある asadmin.bat になります。私の場合は、「c:\glassfish4\glassfish\bin」フォルダーになります。起動の方法は以下になります。
    asadmin start-domain

 停止する方法は以下になります。
    asadmin stop-domain


 GlassFish サーバの起動後、ブラウザを立ち上げて次のURLを入力します。「http://localhost:4848」。ブラウザに次の管理画面が表示されるはずです。

接続プールの登録

 管理画面の左ペインで、「Resources」→「JDBC」→「JDBC Connection Pools」の順に選び、右ペインにある「New」をクリックします。

 プール名に「knowledgeDBPool」を、リソース型に「ConnectionPoolDataSource」を、データベースのドライバベンダは「MicrosoftSqlServer」を選択して、「NEXT」をクリックします。

 画面下方にある多くのパラメータ中、必要な項目の左端のチェック欄をチェックして、値を入力します。その後、下図の接続を確認後に、「Finish」をクリックします。

 入力が必要な項目は、ServerName:localhost, PortNumber:1433、DatabaseName:KnowledgeDB、InstanceName:SQLEXPRES、User:sa、Password:sa のパスワード になります。

 左ペインにある「Pind」ボタンをクリックして、入力した値で接続できることを確認しましょう。

接続リソースの登録

 管理画面の左ペインで、「Resources」→「JDBC」→「JDBC Resources」の順に選び、右ペインにある「New」をクリックします。

 JNDI 名に「jdbc/knowledgeDB」を、プール名に前章で登録した「knowledgeDBPool」を選択し、右ペインにある「OK」をクリックします。

フリーソフトウェアの整備

jQuery の整備

 ブラウザ上で動作するプログラムを記述するにはjQueryを使用します。私がこのサンプルで使用しているのは jquery-2.1.1-min.js になります。本家のページ http://jquery.com/ から利用できるバージョンは jQuery 2.2.4 に上がっています。jQuery はバージョンの更新が早く、かつバージョン間の互換性が保障されていないと理解しています。そのためこのサンプルのプログラムがそのままでは動作しないかもしれません。その場合は、試行錯誤してください。きっとよい勉強になると思います。

 上記ページから入手したファイルは、 resources\js\ 以下に格納しました。

 この jQuery と次の Bootstrap を組み合わせて使用すると、今までの Web アプリケーションと比較して格段に優れた操作感を提供できると思います。また jQuery は javascript と比較して記述力が高いというのが私の評価です。jQuery を習得した後では、javascript を記述することは無くなりました。それまでためていた自分用の javascript ライブラリも jQuery の形式に書き改めました。

Bootstrap の整備

 私はエンジニアですので、プログラムを工夫する分には努力を惜しみませんが、デザイン上の工夫は厄介です。そこで簡単に統一的な画面を作れることから、 Bootstrap の力を借りることにします。このサンプルで使用しているのは bootstrap 3.3.0 になります。本家のページ http://getbootstrap.com/ から入手してください。もしこのサンプルのプログラムがそのままでは動作しない場合は、試行錯誤してください。 jQuery 同様きっとよい勉強になると思います。

 上記ページから入手したファイルは、 resources\js\ 以下に格納しました。

 Bootstrap を効果的に使用しているのは、次の2つの場面です。まずボタンの2度押しを防止するために、 submit 直後にオーバーレイ画面を重ねて、下にあるコントロールを操作できなくしています。この方法が2度押し防止の一番簡便な方法と考えています。

 もう一つ有用と考えているのが、モーダルなポップアップダイアログです。javascript による showModalDialog() を利用する場合、すべてのブラウザが対応していないこと、実際的には対応しないという動きがみられることです。そしてその表示のデザインも、使用しているブラウザ固有であって、プログラマないしデザイナーの制御が及びません。これを Bootstrap の Modal を使用することで、すべてを管理することができます。実は、2度押し防止のオーバーレイ画面も、この Modal を利用しています。ただし、マウス操作やキー操作でモーダルを中断する機能を停止した状態で使用しています。

不明なこと

 ここまでの内容に関しては確認しながら進めてきました。残念ながら不明なことがあります。1台の PC 上に開発環境を構築することは、これまでの手順に従って作業を行えば完了できると思います。実運用で使用する Web サーバを構築する方法は、おそらく以下のような手順になるだろうとは想像しています。

 デプロイの作業自体 NetBeans の機能を利用して行うことになるでしょう。そのとき、NetBeans に対して行った操作内容が Web アプリケーションの実行にどこまで必要なのかが分かっていません。おそらくデプロイの作業をすべて手作業で実施して、一つ一つ動作を確認していけば理解が深まると思います。しかしそのためには、サーバ用 OS をつんだ専用のマシンを用意して、さまざまなテストを繰り返す必要があります。それは私の手に余ります。今回の Web アプリケーションのサンプルは、あくまでも Java EE の技術習得が目的でした。実務で Java による Web アプリケーション構築の機会に恵まれるのを待ちたいと思います。