ひよっこ。

I want to…

  • つぶやき。。。

    • 新しいことやるのは楽しいわ。 1 day ago
    • 間違って違うワークスペースでヘルプを出してしまった。怖... 3 days ago
    • うーん、notificationなどで利用するComponent内で限定した(Reactで言う)stateを持ちたいんだけど...。素直にhyperappのstateで保持するか。 4 days ago
    • ふと気になって調べてみたら、ESNextの OptionalChainingはstage1にはいるのか。 github.com/tc39/proposal-… 4 days ago
    • @JorgeBucaran ありがとうございます。ちょっと試してみます。ondestroyのログは取れてたので、 > This event is not called in its child elements. が原因かなと思ってました。 4 days ago
  • archive

  • ジャンル

  • tag

  • 広告

Posts Tagged ‘Tomcat’

Tomcat5.5.27のServletContext

Posted by hikaruworld : 2008 11月 11

Tomcat5.5.25までは、javax.servlet.ServletContextクラスの次のメソッドに関しては、
サーブレット仕様に完全に準拠していないらしい。

ServletContext.getResource()
ServletContext.getResourceAsStream()

上記のjavadocでは以下のように記述されている。

指定されたパスにマップされたリソースへの URL を返します。パスは “/” で始まる必要があり、現在のコンテキストルートへの相対パスとして解釈されます。

つまり、web.xmlに以下のような記述をした場合はNGになるはずである。
※velocity-propertiesの設定をしているのは、業務でこの部分ではまったためで特別な意味はない。

<web-app>
    <!-- 省略 -->
    <context-param>
        <param-name>velocity-properties</param-name>
        <param-value>WEB-INF/classes/velocity.properties</param-value>
    </context-param>
    <!-- 省略 -->
</web-app>

しかしながら、Tomcat5.5.25であれば起動時に警告すら出ずに問題なく起動してしまう。

2008/11/04 14:11:57 org.apache.catalina.storeconfig.StoreLoader load
情報: Find registry server-registry.xml at classpath resource
2008/11/04 14:11:57 org.apache.catalina.startup.Catalina start
情報: Server startup in 11479 ms

この問題は、Tomcatでも5.5.23の時点で、bugとしてBugzillaに報告されている。
ただ、たいしたバグじゃなかったためか(そりゃ、基本的にみんな仕様にのっとって実装しているはずだからさ(-)、
5.5.24、5.5.25では修正されなかったようだが、5.5.26でfixされているのだ。

これではまる。

新規環境をTomcat5.5.27で環境構築して起動したところ、こんなエラーでアプリケーションが起動しない。

致命的: Error listenerStart
2008/11/10 19:47:37 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/trunk]
2008/11/10 19:47:37 org.springframework.context.support.AbstractApplicationContext close
情報: Closing application context [Root WebApplicationContext]

それで設定ファイル周りを見ていると、/がもれていることに気がつき、
以下のように修正を行う。

<web-app>
    <!-- 省略 -->
    <context-param>
        <param-name>velocity-properties</param-name>
        <param-value>/WEB-INF/classes/velocity.properties</param-value>
    </context-param>
    <!-- 省略 -->
</web-app>

結局は、これで無事起動した。
単純なミスだったんだけど、めちゃくちゃ長いweb.xmlからこの設定漏れに気がつくのは苦労した。

Tomcatのこのバグははじめて知ったんだけど、もしかして周知のネタなんだろうか。。。

以下、余談。
「誰が犯人だ、くそぅ!!」と思って履歴をたどってみると、昔の自分だった。涙目。
今日の2時間を使うことになった昔の自分が恨めしい。

広告

Posted in program | タグ: , , | Leave a Comment »