Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

Struts環境下で同一ロジックのアプリケーションを複数動かす

はじめに

Struts環境下でActionごとに固定のパラメータを渡す方法について記載。

背景

Strutsフレームワークで構築された単一プロジェクト内にて、
ロジックが同一(で設定の切り替えがプロパティファイルの差し替え等で事足りるレベル)のアプリケーションを複数同時に動かしたいというユーザの追加要求に対応するため。

分かっていれば、最初からそういう構成にしていたのですが、
発覚したのが一通りテストまで終わったタイミングという・・・・・・

プロジェクトが単一のアプリケーションで構成されているのであれば、
プロジェクト単位で複数動かす方法で事足りるのですが、
元々複数の異なるアプリケーションが乗っかかっている上に、
複数動かしたいのはその中の一部のアプリケーションのみのため断念。

いっそ該当するロジックの部分だけコピーして複数作ってもいいのだけど、
何か修正するたびに修正コストが倍々になるのは避けたいし。

そこで、Struts-config.xmlにて、
actionタグごとのparameter属性でパラメータを渡すことが出来るので、
リンク元を複数に分け、踏んだリンクによって渡すパラメータを変える方法で実装することに。

実装方法

Actionはすべて同一

struts-config.xml
<action path="/linkA" type="com.hogehoge.xxxAction" parameter="AAA">
    (中略)
</action>

<action path="/linkB" type="com.hogehoge.xxxAction" parameter="BBB">
    (中略)
</action>

<action path="/linkC" type="com.hogehoge.xxxAction" parameter="CCC">
    (中略)
</action>
com.hogehoge.xxxAction.java
String xxx = ActionMapping.getParameter();
session.setAttribute("_LINK_PARAM_", xxx);

あとは渡されたパラメータによって、
読み込むプロパティを変えたりする部分だけを実装すればOK。

おわりに

最初から分かっていれば出口をその分用意するような実装が一番手っ取り早いのですが、
「複数」の数が決まってない場合、今後増えたり減ったりする可能性がある場合、などはこっちの方が楽な気がします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?