Java

サーブレット学習

■学ぶ理由
①RequestとResponseの仕組みを実感したいため
⑫Webサーバの立ち上げをしたいため

■学習経過
<1>VagrantとVirtulalboxで仮想マシンを起動する
▼手順
①ドットインストールの「ローカル開発環境の構築」の項に従って、
 1.VirtualboxとVagrantで仮想環境を構築、vagrant upで仮想マシン起動 
 2.puttyで仮想マシンにログイン(ユーザ:vagrant)
 3.FTPツールであるCyberduckでhtmlファイル(テスト1.html)を仮想マシンに転送
 4.PHPファイルを置く
 5.PHPでWebサーバ立ち上げ (php -S 192.168.33.10:8000)
 6.ブラウザでhttp://192.168.33.10:8000/テスト1.htmlを叩いたら、htmlファイルが描画された
 7.たぶん似たようなことをサーブレットでもできるんじゃなかろうかと、今、
  vagrantで立ち上げた仮想マシン上に、javaとtomcatをインストールしようとしている。(2018/01/03)

▼学んだこと
・yum や sudo などのLinuxコマンドをPUTTY利用時に学んだ(http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/230999/)
・EclipseでJavaライブラリのImportを利用しているとき、読み込まれないという問題が発生。ビルドパスを通す必要があったようだ(http://starscream.hatenablog.com/entry/20170308/1488974878)

<2>TomcatとEclipseの連携でGETリクエストの仕掛けを作る
▼手順
①『すっきりわかる』を参照して、Tomcatサーバの立ち上げ。

ローカル・ホスト の Tomcat v9.0 サーバー で必要な幾つかのポート (8005, 8080, 8009) がすでに使用中です。サーバーはすでに別のプロセスで稼働中であるか、システム・プロセスがそのポートを使用中である可能性があります。このサーバーを始動するには、他のプロセスを停止するか、ポート番号を変更する必要があります。

というエラーが発生。
→netstat -nao と tasklist をcmd上で実行して、該当PIDを特定。どうやらTomcatがそもそもEclipse軽油とは別に起動していた模様なので停止させたらOKになった。

②htmlファイルをプロジェクト(example)のwebcontent配下に作成し、http://localhost:8080/example/hello.htmlでリクエスト。以下の事象が発生

・事象
 Eclipse上で作成したTomcatのhtmlファイルをリクエストしても404エラーになる。

・仮説
・Eclipseで生成したファイルがブラウザでリクエストしているところとは違うところに生成されてしまっている。

・実験
①まず、手動でどこにファイルを配置し、どういうGETリクエストを投げたらファイルレスポンスがあるのかを調査する
http://localhost:8080/example/seach.html

host-manager
manager
ROOT
examplse
docs
のそれぞれにsearch.htmlを置いて実行
works>catalinaの各階層にsearch.htmlを置いてリクエストしたが出てこない

→webapps>examplesの下にsearch.htmlを置いて、
 http://localhost:8080/examples/search.html を実行したら動いた。

②Eclipseで作成したファイルはどこにあるのか
C:\Users\orahs\pleiades-4.7.2-java-win-64bit_20171225\pleiades\workspace\example\WebContent
にある

つまり、
C:\Users\orahs\pleiades-4.7.2-java-win-64bit_20171225\pleiades\workspace\example\WebContent
上に生成されたファイルを、
C:\Users\orahs\apache-tomcat-9.0.2-windows-x64\apache-tomcat-9.0.2\webapps
の下に生成できれば勝ち!

・結論
 プロジェクトがサーバに追加されてなかった!!

▼参考URL
・プロセスが残っていてEclipse上で削除したいケース
 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1312626928
・netstat
http://www.atmarkit.co.jp/ait/articles/0207/20/news003_2.html
・Tomcatのディレクトリ
 http://localhost:8080/examples/servlets/servlet/HelloWorldExample

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1/29
https://teratail.com/questions/110007 で問い合わせている、
「Eclipse経由でTomcat9.0起動し、サーブレットを実行できない件」
にリトライ。

■やったこと
・Eclipseの再起動。
・tomcatフォルダをpleiadesフォルダの下に置く。
・exampleプロジェクトをエクスプローラー上、Eclipse上の両方から削除。
・examplse作成時に、web.xmlのデプロイメント記述子を作成 のチェックを入れないといけないらしいので入れた

■あと試すべきこと
・Tomcat8.0ならどうか試す
→8.5でやったが同様に不成功。
・server.xml(tomcatの下のconf下の方か、workspase>Server下か迷うが、、)を書きかえる。

■参考URL
・Eclipse NEONにてJavaでTomcatサーバの構築でハマる
 http://ts0818.hatenablog.com/entry/2017/06/25/004155
・Eclipse NEONにてJavaでWeb開発用プロジェクト(Hello World!)
 http://ts0818.hatenablog.com/entry/2017/06/25/173424
などを見た。

■ひょうっとしたら役に立ちそう
http://gomyownway.hatenablog.com/entry/2012/09/21/012637
http://blog.codebook-10000.com/entry/20130606/1370526510


2/3(土)
 とりあえずweb.xmlやserver.xmlの役割を理解するために、
  http://www.searchman.info/java_eclipse/1020.html
 で勉強を試みる。webapps以下の役割を知りたかったので、
 http://localhost:8080がなぜかうまくいかない。
 そのため、tomcatを再度インストールしようとした。
 zipだとインストールがうまくできなさそうだった(先のURLを叩いてもダメだった)ので、

 installer版をインストールしたらうまくいった。

2/4(日)
common.componentファイルの<wb-resourceをいじったもののうまくいかず。。
 教科書を読んだらDの補説にデプロイの説明があった。
 「動的Webプロジェクトの配置構成」→「JavaEE仕様の配置構成」に変換がEclipseにより行われているそう。
 common.componentファイルはそれのBefore→Afterを決めている模様。
 このことから言えるのはWebContent以下のファイルはデプロイできているのに、Servletがデプロイできていないこと。
 もっと不思議なのは、


7/28(土)
■事象
・追加したServletファイルがビルドされない(※←これはたぶん)、且デプロイもされない(tomcat/webappsにwarを配置してみたが、中身をあけるとclassファイルがない)

■検討事項
・ビルドの問題なのかデプロイの問題なのか不明。どの段階でしくっているのか
・server.xmlの連携設定の問題なのか?なんとなくビルドがうまくいってない気もするが。
 warファイルの生成はビルドに属するのかデプロイに属するのかなど気になる。

■以下見てみるか
https://qiita.com/saba1024/items/b24ecbae87146a631e88