概要
前回はMaven + Springで簡単なWebアプリを作成しました
今回もMaven + Springではあるのですが前回は「spring-boot-starter-web」という仕組みを使っていて、これはjarを生成するだけでWebアプリが作成できるという仕組みです
「spring-boot-starter-web」では一般的なJavaのWebアプリの構造にはなっておらず、Webサーバ(TomcatやJBOSSなど)上で動作させようとするとちょっと面倒です
今回はWebサーバ上で動作するSpringアプリをSTS(Spring Tool Suite)というツールを使ってやってみました
環境
- Mac OS X 10.10.2
- Eclipse Luna 4.4.1
- Spring Tool Suite 3.6.4
- Java 1.8.0_31
- Tomcat 8.0.20
各種インストール
必要なプラグインなどをインストールしていきます
STS(Spring Tool Suite)のインストール
Eclipse Marcketplaceから簡単にインストールできます
Help -> Eclipse Marcketplace -> Searchタブ -> Findに「spring」と入力して検索
とするとSTSが表示されるので「Install」をクリックして同意してEclipseを再起動することでインストールできます
※上記はインストール済みのEclipse Marcketplaceでの表示
Tomcatのインストール
今回はTomcat上で動作させてみます
公式からで問題ないのでTomcatをインストールしてください
HomebrewでもOKです
brew install tomcat
TomcatをインストールしたらEclipse上に実行用のサーバとして登録します
Eclipseを起動して
Package Explorer上で右クリック -> New -> Other -> Server -> Server
と選択しNextをクリックして
Aapche -> Tomcat v8.0 Server -> Next
で「Tomcat Installation directory」にTomcatをインストールしたディレクトリを指定します
Homebrewでインストールしたのであれば/usr/local/Cellar/tomcat/8.0.20/libexec
的なパスを記載します
入力したら「Finish」をクリックしてServerの作成は完了です
プロジェクトの作成
サンプルのプロジェクトを作成します
今回はSTSを使ってWebアプリ用のサンプルプロジェクトを作成します
Package Explorer上で右クリック -> New -> Other -> Spring -> Spring Starter Project
を選択しNextをクリックします
プロジェクトの内容を設定するダイアログが表示されるので以下を入力および選択します
- Project name・・・任意のプロジェクト名を入力します
- Templates・・・「Spring MVC Project」を選択します
あとはそのままでOKです
入力できたらNextをクリックします
「Spring MVC Project requires a download of 16608 bytes」という警告がでますが、Yesを選択します
次にパッケージ名を入力するダイアログが表示されるので任意のパッケージ名を入力します
最低限、3階層のパッケージ名を入力する必要があります
あとはFinishをクリックすればプロジェクトが作成されます
作成されたあとのプロジェクトのディレクトリ構成は以下のとおりです
サンプルプロジェクトの作成ができたら早速動かしてみましょう
Tips
- Errors running builder ‘Faceted Project Validation Builder’ on project ‘spring-test’.
みたいなエラーが出る場合は
Help -> Install New Software
を開き
を選択し「Web, XML, Java EE and OSGi Enterprise Development」を選択しインストールしてください
Lunaの選択項目がなければ追加すればOKです
Lunaでないバージョンを使っている場合は、適宜バージョンにあったリポジトリを選択してください
結構量が多いのでインストールには時間がかかります
で、この「Web, XML, Java EE and OSGi Enterprise Development」をインストールするのにエラーになる場合は一旦STSをアンインストールしてから、先に「Web, XML, Java EE and OSGi Enterprise Development」をインストールしてください
その後STSを再インストールします
私の場合は「Web, XML, Java EE and OSGi Enterprise Development」をインストールするのに以下のエラーに悩まされました
No repository found containing: osgi.bundle,org.aspectj.runtime.source,1.7.0.20120703164200
Webで調べてみるとリポジトリの情報をリロードしてくださいという記事が多かったのですが原因はそこではなかったようです
アプリ起動
インストールしたTomcat上で動作させてみます
起動
プロジェクトを右クリックして
Run As -> Run on Server
をクリックします
Tomcatインストール時にEclipse上に作成したTomcatサーバがあると思いますのでそれを選択します
選択したらFinishでアプリを起動します
※注意点としてはすでに8080でTomcatや別のアプリサーバが起動している場合は停止してから実施してください
Eclipseのコンソールに起動ログがずらーっと出てくると思います
長いので一部抜粋ですが、以下のように表示されればOKです
・・・
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 1248 ms
3 12, 2015 1:35:19 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["http-nio-8080"]
3 12, 2015 1:35:19 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["ajp-nio-8009"]
3 12, 2015 1:35:19 午後 org.apache.catalina.startup.Catalina start
情報: Server startup in 3995 ms
INFO : com.sample.sample.HomeController - Welcome home! The client locale is ja_JP.
動作確認
http://localhost:8080/sample
にアクセスして「Hello World !」と表示されることを確認しましょう
ここで出力されている情報はsrc/main/webapp/WEB-INF/views/home.jsp
の内容を表示しています
jsp の内容を直接書き換えれば、Tomcatを再起動しないでも内容を修正できます
最後に
やはり環境を構築するところでつまづきました
Javaだけではないですが、本質的なことをする前の部分でこけるとやる気がなくなります
そして特にJava周りの環境構築ではつまづきやすい気がします
とりあえずSpringFrameworkを使ってアプリサーバ上で動作させることができました
ちゃんとしたWebアプリを作るのであれば最初からSTSをベースに開発したほうがいいかもしれません
あとは実際にwarを作成してデプロイしてみたり、maven経由でアプリを実行できるようになると更に便利かなと思いました
ちなみにこの状態でもmvn package
でwarファイルを作成できるところまでは確認しました
0 件のコメント:
コメントを投稿