LoginSignup
0
1

More than 5 years have passed since last update.

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

Posted at

はじめに

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。

おわりに

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1