Friday, June 08, 2007

Web アプリケーションにおけるコンテクスト間通信

crossContext 属性は、getContext() で取得する側を true に設定する。そうしないと、null が返る。

共通するクラスは WEB-INF/lib/ や WEB-INF/classes/ においては駄目。ClassCastException が発生する。Tomcat5 ではそういうクラスは、CATALINA_HOME/shared/lib/ や CATALINA_HOME/shared/classes/ に置けとある。Tomcat4 だと CATALINA_HOME/lib/ か CATALINA_HOME/classes/ に置けとあったがうまくいかなかった。見つけられずに NoClassDefFoundError が発生する。そこで、CATALINA_HOME/common/lib/ に置いたらうまくいった。

http://tomcat.apache.org/tomcat-4.0-doc/class-loader-howto.html
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/class-loader-howto.html
http://www-06.ibm.com/jp/software/websphere/developer/j2ee/strategy/


http://www.fortunefield.com:8080/StoreSide/Store?data=fuckYou
http://www.fortunefield.com:8080/LoaderSide/Loader

$CATALINA_HOME/shared/lib/ を有効に使えるのは、$CATALINA_HOME/webapps/ に war ファイルを置いた場合のみのようだ。ただ、これだと crossContext 属性を設定できないので、コンテクスト間通信には使えない。。。

No comments: