- PR -

JSPを変更し再コンパイルさせるには?

1
投稿者投稿内容
ノブちゃん
会議室デビュー日: 2003/07/30
投稿数: 2
投稿日時: 2003-07-30 17:16
初めて投稿いたします。

私はTOMCAT4とpostgresSQLをサーバにセットて
Webサービスアプリケーションを開発しているものです。
まだ、はじめたばかりですので、いろいろ分からないと
ことが多いのですが、現在「変更したJSPファイルの
表示結果が、変更前のJSPファイルの表示結果と置き換わらない」
という問題で困っています。

TOMCATの場合、JSPファイルに変更を加えると自動的に再コンパイル
して新たな表示を行うはずですが、JSPファイルが多くなってくると
だんだん、再コンパイルしにくくなる現象がおきております。
特に表示系を変えずにコードのみの変更の場合多くおきております。

そのため、(1)ブラウザ表示を変更前のJSPファイルとは、変わるように
      記述して、変更JSPファイルをサーバにアップする。
     (2)わざと変更後のJSPファイルにコードエラーとなる
      記述をしておき、そのエラーを認識したことを確認して
      からエラー部分のコードを削除して再アップする。
     (3)TOMCAT自体のリブートを行う。
などの処置を取っています。
 しかし、それでもJSPファイルの数が多くなると再コンパイルして
くれる率がひくくなってしまいます。たまに、JSPファイルを削除
してもそのまま動いてしまいますし、一度ファイル削除を認識すると
ファイルを再アップしてもなかなか認識してくれなかったりします。

皆様はこのようなご経験はありませんか?
その場合、どのように対処されていますでしょうか。
1台のパソコンでTOMCATを起動してその上でコーディングすると
このような問題はおきないのでしょうか?

よろしくお願いします。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-07-30 18:43
引用:

そのため、(1)ブラウザ表示を変更前のJSPファイルとは、変わるように
      記述して、変更JSPファイルをサーバにアップする。
     (2)わざと変更後のJSPファイルにコードエラーとなる
      記述をしておき、そのエラーを認識したことを確認して
      からエラー部分のコードを削除して再アップする。
     (3)TOMCAT自体のリブートを行う。


これは・・・ご苦労様です。。。

方法は数種類ありますのでご案内します。

1. server.xml で 該当Contextに reloadable = "true" を追加する。
  オートリロードと呼ばれるもので、勝手に再読み込みしてくれます。

2. workディレクトリの xx$jsp.java, xx$jsp.class を手動で削除。
  めんどくさいと思います。

3. http://hostname:portNo/manager/reload?path=/XXX
運用段階になるとこの方法を使います。
  詳細はJakartaHPでご確認ください。

以上。ごさんこうまで
ノブちゃん
会議室デビュー日: 2003/07/30
投稿数: 2
投稿日時: 2003-07-30 22:48
raystar様、ご丁寧なご解答誠にありがとうございます。

現状では、1.でご指摘のありました、server.xmlでのContex内の
reloadable="true"は設定は行っておりました。
2.のwork内の該当ファイルを削除するを行ったところ、確実に再
コンパイルができるようになりました。ありがとうございます。

3.のmanagerを利用したreloadでは、再コンパイルを行わない
場合もありました。

2の方法で確実に再コンパイルできるようになりました。
参考になりました。本当にありがとうございます。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2003-07-31 09:29
引用:

1. server.xml で 該当Contextに reloadable = "true" を追加する。
  オートリロードと呼ばれるもので、勝手に再読み込みしてくれます。

2. workディレクトリの xx$jsp.java, xx$jsp.class を手動で削除。
  めんどくさいと思います。

3. http://hostname:portNo/manager/reload?path=/XXX
運用段階になるとこの方法を使います。
  詳細はJakartaHPでご確認ください。

以上。ごさんこうまで



こんにちわ。

わたしは確実に2.を行っていますね。
なぜかコードを修正してもキャッシュを使用している場合が
多々ありますので。

2.を行えば確実です。

運用段階においては、reloadable=falseとすることが多いので
こちらも2.です。

コード修正=サーバ再起動ですから。

では。
グーフィー
会議室デビュー日: 2003/07/07
投稿数: 9
投稿日時: 2003-07-31 14:12
こんにちわ。

私も2番です。

JSPが変更されたかどうかは、JSPファイルのタイムスタンプ
が関係あったはずですよ。

例えば、TomcatのWorkにあるXXX_jsp.classとJSPファイルの
タイムスタンプを比較して、JSPファイルのタイムスタンプが
新しいと判断した場合に再コンパイルされたはずです。

今試しに、システム日時を過去日に変更し、JSPにコンパイル
エラーを潜ませてリロードさせても正常に動いてましたから。

参考にでもなれば幸いです。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-08-02 01:03
昔はJSPが自動的に再コンパイルしてくれなくて、
めんどくさかった経験があります。

最近、Tomcat4.1.24を入れたのですが、
Context reloadble = "false"で、
JSPを更新してUPロードすると、勝手に再コンパイルしてくれます。
workを消すことがなくなっちゃいました。

これって、APの仕様だったんですかね。
1

スキルアップ/キャリアアップ(JOB@IT)