dポイントプレゼントキャンペーン実施中!

会社で使用しているサーバが、どうも、SUN OSのようなのですが、ローカルのTomcat環境では問題なく動くJSPのプログラムが、サーバにアップすると、500エラーが発生し、デバッグに必要な手がかりが全く表示されないので、困惑しています。

サーバへは全てバイナリモードでアップするように言われていて、テキストファイル等はリモートでも改行コードがCR+LF(windows)であることに気がつきました。

そこで質問なのですが、JSPでは、改行コードがLF(UNIX)だとエラーが発生する設定もあり得るものでしょうか。

さらに、JSPは、jspファイルに変更を加えたら、サーバも再起動しなければならないのでしょうか。サーブレットとは異なり、再起動は必要ないと思っていましたが、先輩に頼んで、再起動してもらわなければなりません。

よろしくお願いいたします。

A 回答 (4件)

> そこで質問なのですが、JSPでは、改行コードがLF(UNIX)だと


> エラーが発生する設定もあり得るものでしょうか。
少なくとも私がJavaを始めてからこの現象にぶち当たったことはありません。
無いとは言い切れませんが、あまり考えなくてもいいかも。
改行コードよりも文字コードの方が厄介…orz

> <%@ page import="java.util.regex.*" %>
> や、
> String.split("正規表現");

当てずっぽうですが、サーバのJavaバージョンが
1.3以下ってことはないですか。
どっちもJDK1.4からのAPIなので…。

ともあれ現象や500エラーとだけ言われてもつらいので、
例外エラーを吐いてるログ残ってませんか?


>さらに、JSPは、jspファイルに変更を加えたら、サーバも再起動しなければならないのでしょうか。
多分必要なし。
JSPは初回アクセス時にJSP→Java→classという変換&コンパイルする機構を持っているから。
でも、一旦止めた方が気休め程度ですが安心かもしれない。
アクセス中の人がいたら面倒な事になるかもしれないし…。

> ページを編集するなどしてエラーになるような更新を行うと~
エラーページの場合、JSP→Java→classの過程でコンパイルエラーが
発生するでしょうからそのせいで、classの上書きが起こらず
前のJSPが動くという現象なのではないでしょうか。


この辺は最初から書いてあると嬉しい情報です。
解決しないようなら補完願います。
・サーバのJDKバージョンとアプリケーションサーバの種類とバージョン
 (InterstageServer特有の問題だったら分かんないなぁ…)
・ローカル(開発機?)のTOMCATとJDKのバージョン
・500エラーの他に出力される例外エラー等のログ

この回答への補足

後にCR+LFに変換したファイルをアップしてもエラーのままだったので、おっしゃるとおり改行コードは関係ないらしいことがわかりました。

> 当てずっぽうですが、サーバのJavaバージョンが1.3以下ってことはないですか。

それが一番の心当たりがあります。次回、バージョンを調べてみることにします。
他には、サーバが特有なためか、JSPの暗黙のオブジェクト変数の、(ローカル環境では問題ない)「application」変数も使えないこともわかりました。サーブレット関連APIにもバージョンの違いがあるのでしょうか。

> 発生するでしょうからそのせいで、classの上書きが起こらず
> 前のJSPが動くという現象なのではないでしょうか。
なるほど、そうなら理解できますね。

先輩いわく、500エラー等でログを吐かないようにしているそうで、かなりやっかいです。
ローカルはTomcat5.5 JDK1.5だったと思います。
サーバは今度調べてみることにします。
でも、正規表現、application変数などの使えないコードを削除していくと、最終的にはやっとエラーが起こらず、動いたので、だいぶ原因が見えてきました。
ありがとうございます。

補足日時:2007/07/15 13:10
    • good
    • 0

富士通のサーバってのが、わからないですが、私が過去に経験したのは、


試験環境tomcat4.1と実機websphere6.0 という間で
試験環境で正常に動作したのに実機で駄目だったというのがあります。
そのとき問題になったのは、tagとスクリプトレットの展開順序の違いでした。

Windows上のtomcatは内側から展開していきますが、unix上のwebSphere6.0では左から順に展開しているようでした。
そのため、
<%= abc.getAttr("<jsp:hoge id="foo" />") %>
こんなタグが、Windowsのtomcat上では正しく展開されて実行されるのに、
unixのwebSphereではエラーになる("<jsp:hoge id="という属性がないと言われる)
というのがありました。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきます。

お礼日時:2007/07/26 20:51

以下のサイトとかを見ていたら、単に「FTPの転送モードの設定」のことじゃないかなと思うのですが・・。



タイトル: CGIの漢字・改行コードについて
http://www.miloweb.net/pastbbs/0002/603.html

改行コードの話
http://ash.jp/code/return.htm
    • good
    • 0

アップ先のサーバの種類はなんですか?


アップ先もtomcatですか?
それとも、WebSphere/WebLogic等の別のサーバですか?

この回答への補足

どうやら、富士通のサーバ(ソフト)らしいです。
サーバの再起動は、SSHでログインして、先輩がシェルスクリプトでその都度、行っているようです。

色々試すと、エラーが発生しないjspページはの場合は、再起動なしでもアップした直後に動くようです。
一方、ページを編集するなどしてエラーになるような更新を行うと、アップロードしたにもかかわらず、エラーなしで動いていた前のバージョンのjspページのまま動き続け、その後、再起動した直後から、エラーが発生するという挙動に気づきました。

ローカルのTomcatでは問題なく動く以下の、
<%@ page import="java.util.regex.*" %>
や、
String.split("正規表現");
などで、500エラーが出ることがわかりました。

ただ、それ以上の環境についてはまだ詳しくわかりません。

補足日時:2007/07/12 20:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!