smellman's Broken Diary

クソみたいなもんです

Strutsで二つのアプリケーションを同時に

内部ロジックは同じなんだけど、対象ユーザが異なるアプリケーションを作らないといけないという話が持ち上がった。
わざわざ二つプロジェクト立ち上げてもコードが共有できないと死ねるので、web.xmlに思いっきり二つのプロジェクトをつっこんでみた。

    <!-- 一つ目 -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        ....
        <load-on-startup>4</load-on-startup>
    </servlet>

    <!-- 二つ目 -->
    <servlet>
        <servlet-name>action-unko</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config-unko.xml</param-value>
        </init-param>
        ....
        <load-on-startup>4</load-on-startup>
    </servlet>

    ....

    <!-- mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>/system/do/*</url-pattern>
    </servlet-mapping>
    
	<servlet-mapping>
        <servlet-name>action-unko</servlet-name>
        <url-pattern>/system/unko/*</url-pattern>
    </servlet-mapping>

テストの時は同時に起動させて、リリースの際はweb.xmlを二つ作っておいてbuild.xmlでどちらかを参照するか分けるようにすればリリース作業も楽チン。