Tomcat7を使って、JavaEE6の開発環境を1から構築します。JavaEE6入門ではなく、JavaEE6入門のためのEclipse環境を作るのが目的です。今回はスクリーンショット多めにしてみました。22:00頃)記述ミスと記述不足を20箇所ほど修正しました。5.0よりも前で止まっています。そのせいで最近ちょっと困ったことがあったので、今後のためにも、基礎知識として比較的新しいJavaEEを学んでおく必要があるかな、そしてどうせなら、一部のJavaEE機能を使うだけではなく、純粋なJavaEEでどこまで開発できるのかを知っておいた方が良いかな、と思ったのが今回の記事を書いたきっかけでした。Developerを使うのが簡単、という結論に落ち着きました。最初はMavenだけでやってみようとも考えていましたが、ちょっと無理でした。それと、この記事は、どうしてもEclipseを使いたい人向けです。試していませんが、NetBeansやIntelliJのほうが簡単に構築・開発できるかも知れません。以下の内容を含んでいます。(H2database)Maven(プラグイン)を使ってビルド&デプロイ前提条件JavaとEclipseの基本操作は知っている前提です。初心者向けではありません。手順書に近いものです。実際に動作を確認したのは下記の環境ですが、Windowsに特化した内容ではありません。記事の中では、パスの区切り表記は、主にスラッシュ(/)を使います。Windows固有のものはバックスラッシュも使います。7.0.56初期設定ディレクトリー*1の構成を決めておきます。Windows7での例を記載しておきます。これ以降の説明では、ディレクトリーを示すのにこれらの名前を使用します。(.\jee6\workspace)JDKだけは、インストールウィザードに従ってインストールすることになります。サンプルでは、H2databaseは相対パスの方が都合が良いので、HOMEディレクトリーの下に作っていますが、必ずしもこの通りでなくても構いません。Eclipseを使うだけならば環境変数の設定は不要ですが、コマンドプロンプト(ターミナル)からTomcatやMavenを実行する場合は、環境変数$JAVA_HOMEの設定が必要です。Windowsの場合は、文字エンコーディング設定が初期設定でMS932になっています。ここは、UTF-8にしておくのが無難です。今回のサンプルもUTF-8で書くようにしています。Oracleから、Java7以上のJDKをダウンロードしてインストールします。インストール済みであれば無視してください。Links"の下にあるリンクから、OSに対応したパッケージをダウンロードし、$ECLIPSE_HOMEに展開します。Distributionsの下のCoreのいずれか(ZIPで良いでしょう)をダウンロードし、$TOMCAT_HOMEに展開します。Eclipseの起動$ECLIPSE_HOMEディレクトリーにあるeclipse(.exe)を実行します。初回起動時に、ワークスペースの場所を尋ねられます。デフォルトでは$HOME/workspaceになります。今回は$HOME/jee6/workspaceにします。チェックボックスをオンにすれば、次回の起動時にはここで選択したワークスペースが自動的に選択されます。後で変えることもできます。JREに設定されている場合は、JDKの設定を追加して、JDKをデフォルト(チェックボックスをオン)にしておきます。Project]を選択して、ウィザードを起動します。最初のページはそのままにして[Next]ボタンを押します。2ページ目では、ひな形となるArchetypeを選択します。ここでは、maven-archetype-webappを選択し、[Next]ボタンを押します。ひな形のArchetypeを選択3ページ目では、プロジェクトのArchetypeを入力します。私はnet.argius.webapp1としています。プロジェクトのArchetypeを入力して完了おそらく数秒で、Mavenのプロジェクト初期化が完了します。プロジェクトの設定変更(Mavenの設定変更)このあと、部分ごとにMavenの設定(pom.xml)を修正していきます。完成版はGistにアップしておきます。pom.xmlhttps://gist.github.com/argius/91f74ea87e3bee10d1f1この時点では、4箇所を変更する必要があります。Moduleがバージョン2.3になっているまた、この時点でディレクトリーの無いソースフォルダーが2つ(src/main/java,src/test/java)ありますので、必要に応じて作成します。ここでは無くてもOKです。最初に、ビルド設定を行います。maven-compiler-pluginを設定します。pom.xmlを開くと、POMエディターで開きます。下側にあるタブのpom.xmlを選択すると、直接入力できるようになります。buildの部分を以下のように書き換えます。入力後、保存するのを忘れないようにしましょう。</build>今回は、Java1.7がターゲットなのでこうなります。エンコーディングは、プロジェクトの設定に合わせます。Problems)が表示されています。これは、servlet-apiのライブラリーが設定されていないからです。*3POMエディターのDependencyを選択すると、依存関係を設定するページが開きます。junitが設定済みです。エディターを使って入力できます。こちらも入力後に保存するのを忘れないようにしましょう。Problems)が表示されます。「Updateを実行しろ」というメッセージが出ていますので、アップデートを実行します。Fix])でも実行できます。次に、web.xml(src/main/webapp/WEB-INF/web.xml)の変更です。maven-archetype-webappでプロジェクトを作成すると、web.xmlがバージョン2.3で作成されます。3.0を使用しますので、web.xmlがバージョン3.0に変更します。下記ページに見本がありますので、参考にしてください。他のバージョンのものも記載されています。Moduleのバージョンを設定します。Facets]を選択します。Moduleは初期状態では2.3になっています。ここが重要なのですが、このままバージョンを3.0にするとなぜかOKが押せません。ここは一旦、チェックを外してOKします。再度開くと、3.0になっていて、チェックすると今度はOKができるようになっていますので、OKします。Descriptor"のアイコンが3.0になります。Project])を実行しておきます。3.0を利用する環境が整いました。!それでは、最初からあるindex.jspを表示してみます。実行すると、ダイアログが表示されます。Server"を選択し、次のページ([Next])へ。デバッグサーバーの選択画面。directory)を聞かれますので、$TOMCAT_HOMEを設定(変数は使えませんので、実際のパスを設定)し、次のページ([Next])へ。このページは次回も同じサーバーを使う場合はスキップされます。ここでTomcatをインストールすることもできるがバージョンが古い最後に次に、起動するサーバーにクラスパスを通すプロジェクトを設定します。右側のCongifuredにweabpp1があればOKです。[Finish]を押して完了します。World!"が表示されるはずです。サーバーが上手く起動しない場合は、Mavenのアップデートを実行してから再度サーバーを起動してみてください。簡単なEL式を書いてみます。ページスコープに値を設定し、それをEL式で出力させます。}</h2></body></html>更新ボタンを押して、表示が変わることを確認しましょう。ちなみに、web.xml2.3を使うと、デフォルトではEL式が無効(isELdisabled=true)になるので注意です。詳しくは、下記ページを参照。Tutorial)JSTLの動作確認EL式は、JSTLと組み合わせるともっと使いやすくなります。%>)を使わなくてもJSPを書くことができます。JSPの先頭行に、taglibディレクティブを宣言します。%>追加すると、JSPエラーが出ます。これは、JSTLライブラリーが未設定のためです。servlet-apiと同様に、POMエディターのDependencyで追加しましょう。</dependency>JSTLは実行時にも必要なので、scopeはruntimeに設定します。サーバーを再起動して、更新ボタンを押して、表示が変わることを確認しましょう。c:setは書く場所によってはJSP警告が出ることがあります。ブロックタグの中に書けば出なくなったりしますが、発生条件が良く分かりません。(H2database)今回は、テスト用データベースにH2databaseバージョン1.4を使用します。データベースファイルは、$HOME/jee6/database/webapp1.mv.dbになるようにします。この場合、JDBC-URLはjdbc:h2:file:~/jee6/database/webapp1になります。AutoServerモードを有効(jdbc:h2:file:~/jee6/database/webapp1;AUTO_SERVER=TRUE)にしておけば、複数のクライアントから同時接続することも可能になります。H2databaseを使用するには、まずJDBCドライバーを取得します。POMの依存関係にH2databaseを追加します。</dependency>$HOME/.m2/repository/com/h2database/h2/1.4.182/h2-1.4.182.jarがダウンロードされているのを確認します。次に、データベースに接続します。H2databaseは、スタンドアローンでJARを実行することで、Webベースのデータベースクライアントが起動します。Explorerビューを使って、データベースに接続できます。H2databaseはブラウザーベースのクライアントが利用できる接続したら、DDLとINSERTを実行します。接続JSTLのSQLアクションを使って、データベースにアクセスしてみましょう。SQLアクションを使用するためのtaglibディレクティブを追加します。それから、sql:setDataSourceでデータソースを設定します。}</td></tr></c:forEach></table></body></html>ここでもJSPに警告が出ますが、正常に実行されると消えます。消えなくても無視してください。データソース毎回、JSPでデータソースを設定するのは無駄が多いので、名前参照できるように設定しましょう。JDBCドライバーは、Webコンテナー(Tomcat7)側に持たせておきます。$HOME/.m2/repository/com/h2database/h2/1.4.182/h2-1.4.182.jarを、$TOMCAT_HOME/libにコピーします。前項でH2databaseの依存関係を追加している場合は、削除して、アプリケーションに直接JDBCドライバーを持たせないようにします。Eclipse上ではServersの下にある、デバッグ時に接続しているTomcat7の設定に、データソースを追加します。.../の下に、context.xmlがありますので、そこにデータソース設定を追加します。このアプリケーションを実際にデプロイする場合は、デプロイ先環境と同じ名前のResourceのnameを合わせておくと良いでしょう。/>JSP側では、データソースを名前参照するように修正します。}</td></tr></c:forEach></table></body></html>Tomcatの設定を変更したので、サーバーを再起動させてから動作確認してください。Servletの動作確認サーブレットを動かしてページを表示できるようにして見ましょう。[Servlet]で追加すると、web.xmlが壊れてしまうので、ウィザードで作られた雛形を元に、ウィザードを使わずにサーブレットを作ってみました。[Class])で追加します。src/main/javaが作られていない場合は、ここで追加します。3.0のアノテーションをちょっとだけ使っています。@WebServletアノテーションを使うと、従来はweb.xmlに記述していたサーブレットマッピングが不要になります。データベースへのアクセスは、今回はEJBやJPAは扱いませんので、NamingAPIとJDBCを使っています。出力先ページは、search.jspとします。}</td></tr></c:forEach></table></body></html>サーバーを再起動してからlocalhost:8080/webapp1/searchにアクセスし、ページが表示できればOKです。ビルド・デプロイ設定まずは、WARファイルをビルドする設定を追加します。pom.xmlのbuild-pluginsの下に、maven-war-pluginを追加します。入力し、実行すれば、target/webapp1.warが作られます。autodeployに対応しているWebコンテナーならば、これをそのままautodeployディレクトリーに置けばデプロイされます。最後に、テスト環境とは別のTomcat7サーバーに、WARをデプロイしてみましょう。デプロイの準備を行います。MavenのTomcat7プラグインの設定Tomcatに設定追加(ユーザー設定、manager-scriptモードを有効に)Mavenのsettings.xmlに設定追加(デプロイ先Tomcatへのログイン設定)その後、Eclipseからでなく、直接Tomcat7を起動します。($JAVA_HOMEの設定をお忘れなく)設定内容は、下記を参考にしました。eclipseでmavenプロジェクトとTomcat7を連携する方法(デプロイ)一部だけ書いておきます。</plugin>settings.xmlには、mydeployserverの設定を追加します。実行すれば、デプロイされます。update=trueを設定しないと、上書き配備できませんので注意してください。アプリケーションを配備しましたが出力されていれば、デプロイは成功です。ここまで設定してきたpom.xmlは、もちろん直接Mavenで使うことができます。説明は割愛しますが、Maven3をスタンドアローンでインストールしてコマンドラインからの実行を試してみてください。デプロイは、実際の開発では、Jenkinsなどで動作させることになるでしょう。この場合、Jenkinsを動作させる環境のsettings.xmlにも設定を追加する必要があるので忘れないように。おわりにここまで作るのには、一部のハマりポイントを除けば、情報もそれなりにありますし、この内容が無くてもそれほど苦労しないと思います。最初は一部分だけの説明にとどめようと思いましたが簡単には行かず、結局は全部入りになってしまいました。ご参考になれば幸いです。*1:Windowsでは「フォルダー」が一般的ですが、Windowsに特化した内容ではないので、ディレクトリーに統一しています。ディレクトリーがルートになります。*3:index.jspやweb.xmlを用意しているのだから、servlet-apiも付けておいてくれれば良いのに。Centralに公開したのでメモ。使いたい人のためのメモすぐに使いたかったのは私です。これは主にリンク集で構成され...2016-06-08とりあえずStruts2+Spring4+MyBatis3の開発環境を作ってみた(2016年初夏バー...きっかけは、Q&Aの対応と、下記の記事です。SERVER"でWicket+Cayenneテスト環境が完結している先に結論から。(2)プロフィールid:argiusはてなブログをはじめよう!argiusさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。