s2axisを使ってみる。(TeedaConfigureListenerとの競合問題)
リモートのメソッド呼び出しを使用したいため、s2axisを利用しようと思います。
S2RMIは利用したことがあるのですが、RMI用にポートがあけられないためs2axisにチャレンジです。
しかし、環境構築で行き詰ってしまいました。orz
原因はTeedaConfigureListenerによるS2Containerのinitializeを行うタイミングが問題のようです。
s2axisは、s2servletより先に立ち上げなくてはならないため(※)、web.xmlのload-on-startupはAxisServlet < s2servletになります。
※ s2axisはAxisServletで初期化したCONFIGURATION_CONTEXTを使用するためです。
<servlet> <servlet-name>AxisServlet</servlet-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <init-param> <param-name>repository</param-name> <param-value>/WEB-INF</param-value> </init-param> <load-on-startup>10</load-on-startup> </servlet> <servlet> <servlet-name>s2servlet</servlet-name> <servlet-class>org.seasar.framework.container.servlet.S2ContainerServlet</servlet-class> <init-param> <param-name>configPath</param-name> <param-value>app.dicon</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>20</load-on-startup> </servlet>
s2axisはWEBサービスのデプロイをS2Containerのinitialize時に行います。
各処理は以下の順で行わなければなりません。
さて、teedaを使用する場合は、web.xmlにlistenerを記載する必要があります。
<listener> <listener-class>org.seasar.teeda.core.webapp.TeedaConfigureListener</listener-class> </listener>
TeedaConfigureListenerを初期化すると、S2Containerのinitializeが走ります。
TeedaConfigureListenerはS2ContainerListenerを継承しており、S2ContainerListenerの初期化時にS2Containerのinitializeを行うためです。
TomcatはListenerの初期化を、Servletの立ち上げより前に行います。
つまり各処理の順序は以下のようになってしまいます。
- TeedaConfigureListenerの初期化(S2Containerのinitialize)
- s2axisのWEBサービスのデプロイ
- AxisServletの立ち上げ
- s2servletの立ち上げ
s2axisはAxisServletの立ち上げより前にWEBサービスのデプロイを行い、AXISのCONFIGURATION_CONTEXTを取得できないためデプロイが行えません。
さて、困った。
環境構成は以下のとおり
- s2-framework-2.4.0-beta-5-SNAPSHOT.jar
- s2-extension-2.4.0-beta-5-SNAPSHOT.jar
- s2-tiger-2.4.0-beta-3.jar
- s2-dao-1.0.36-SNAPSHOT.jar
- s2-dao-tiger-1.0.35.jar
- s2-jsf-1.1.0-beta-2.jar
- teeda-core-1.0-beta-6-SNAPSHOT.jar
- teeda-extension-1.0-beta-6-SNAPSHOT.jar
- teeda-ajax-1.0-beta-5-SNAPSHOT.jar
- s2axis(8/13 SVN trunk) s2axis2-0.2.0.jar 相当?
- s2remoting-1.0.2.jar
- Tomcat 5.5.17
- Java 1.5.0.06