jstlとtaglibs/standardが必要!?

JasperException:
絶対URI: http://java.sun.com/jsp/jstl/core は
web.xmlとこのアプリケーションを配備したJARファイルの
どちらかでも解決できません

ってな感じのエラーが、起動時に発生したら、
jstl と taglibs/standard がクラスパスに
設定されているか確認。つまり、pom.xmlを確認。

ローカルで動いてたのに、結合環境にアップしたら出たのです。
ローカルは Jetty (Run Jetty Run) で起動していて、
結合環境は Tomcat で起動(そしてエラー)。

pom.xmlには、jstl と taglibs/standard がなかった。
それらを追加したら、結合環境でも起動した。
(バージョンは、1.1.2 を指定)

つまり、Jettyは JSTL を含んでいて、
Tomcatはそうではない。
というかそうではないという方が当たり前で、
ローカルでJettyを使ってたから、
JSTL 忘れが気付かなかったと。
結構、そういうの他にもあるんですよねぇ。
サーブレットコンテナが持っているのかどうか、
よくわからないものたち。

Seasarを使ってて、
ある意味 "習慣的" に定義するのが、

o geronimo-jta_1.1_spec (JTA)
o geronimo-ejb_3.0_spec (EJB)

JTAEJBTomcatに含まれてるかどうかは知らない。
厳密にドキュメントを読んで確認したことはない。
まあ昔ながらも感覚的な知識と経験でないだろうと。
WebLogicとかだったらEJBあるからあるだろうと。

なので、Tomcatリリースのときは、
これらを compile or runtime で設定。

geronimo-jpa_3.0_spec (JPA) は...
すっかりJPAを使うプロジェクトに出くわさないので、
まず定義することはない。(実行時に無くても動く)

o geronimo-servlet_2.4_spec (Servlet)
o geronimo-jsp_2.0_spec (JSP)

は、TomcatだろうがJettyだろうが含まれてるだろうから、
とはいえ、コンパイル時に必要だから provided で定義。

と思いきや、GroupID "javax.servlet" の
servlet-apijsp-api を定義してる
プロジェクトもあって、こっちは何!?
まあ、どっちでもいいのかな...
(ふと中を覗いてみると、Apacheライセンスだっ)

とにかく今のプロジェクトでは、

o javax.servlet/servlet-api : provided
o javax.servlet/jsp-api : provided
o jstl/jstl : compile
o taglibs/standard : compile
o geronimo-jta_1.1_spec (JTA) : compile
o geronimo-ejb_3.0_spec (EJB) : compile
※EJBはruntimeでもいいかも

という感じで共通のpom.xml(parent)にて定義して、
ローカルのJetty、結合のTomcatで無事動いてます。

とまあ、わりと感覚的...(><

【追記】
Twitterにてコメント頂きまして、
「JSTLはJavaEE5から標準に組み込まれたので、
JavaEE1.4対応の古いTomcatでは入ってない」
とのこと。ありがとうございます!