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> 

s2axisWEBサービスのデプロイをS2Containerのinitialize時に行います。


各処理は以下の順で行わなければなりません。

  1. AxisServletの立ち上げ
  2. s2servletの立ち上げ(S2Containerのinitialize)
  3. s2axisWEBサービスのデプロイ


さて、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の立ち上げより前に行います。
つまり各処理の順序は以下のようになってしまいます。

  1. TeedaConfigureListenerの初期化(S2Containerのinitialize)
  2. s2axisWEBサービスのデプロイ
  3. AxisServletの立ち上げ
  4. 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