2012年3月1日木曜日

やり直し JAVAサーブレット(基礎からのサーブレット/JSP [改訂版] )その2

(p46) オートリロードの設定
サーブレットの Javaコード( . javaファイル )は
コンテナ上の src フォルダに格納する。そのJavaコードを
コンパイルし生成した . classファイルは WEB-INF フォルダに
配備する。これは基本事項ですね。

これまでの過程で、src フォルダに置いた . java ファイル は
compile . bat  で コンパイルすると、自動的に WEB-INF フォルダ
. class ファイルが生成される。

先ほどの HelloServlet.java ファイルを一部訂正し、再コンパイルすると、
すでに存在している Hello.Servlet.class の内容は更新されている。

結果を確認すべく、
ブラウザ で サーブレット(.class)ファイルが更新されたか確認すべく、
更新ボタンを押すも、画面はまったく変わらない。

コンパイルにより コンテナ内の WEB-INF フォルダに.class ファイルは配備されて

いるはずだが、ブラウザ(クライアント)にはなぜ反映されないのか?
メカニズムははっきり見えないが、コンテナ(Tomcat)を再起動
しなければならないらしい。クライアントは WEB-INF を見に行くと思っていたが、
もう少し複雑なのですね。

前置きが長くなりましたが、ここでは  Tomcat を再起動せずとも、再コンパイルのみで
済ませる技術(Tomcat独自の仕組み)が紹介されている。

コンテキストルート内(entryフォルダ内)に META-INF フォルダを作り、その中に
context.xml を作成する。
内容は <Context reloadable="true"/> だけでよい。
これをコンテナに置きっぱなしにしていると、運用時にパフォーマンスが落ちる。
手動のリロード なるものがあるらしい。
eclipse では、再起動ボタンを押せばすむので、オートリロードは、さほど
重要ではないと思った。


(p48) パッケージ付のサーブレット
パッケージについてはその概念の必要性がはっきりしないが、開発上有効な
ものなのだろう。p49で web.xml に追加しているが、コンテナが持つ サーブレットの
数だけ、<servlet-name>、<servlet-class>、<servlet-pattern>の定義が必要である
ことが見て取れる。
p50では src フォルダ内 に fooフォルダを作成し、その中にBarServlet . java を
作成して、コンパイルするコマンドが乗っている。
> compile foo/BarServlet.java
であるが、p44 で説明があった、”%1にはバッチファイルに渡される引数~” の
意味が理解できた。改めて javac コマンドを ググッてみたが、奥が深いね。



(p54) Oracle . java も自動的にコンパイルされる。
小生は、Oracle . java と OracleServlet . java をそれぞれコンパイルしたが、
ここでは OracleServlet . java のみコンパイルすれば自動的にOracle . java も
コンパイルしてくれる。メカニズムは後から理解できるだろうと思い、深く追求せずに
次に進む事とする。





情報処理 再チャレンジ ブログ ホーム へ

0 件のコメント:

コメントを投稿