Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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。

おわりに

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

real_yaruo
基本SE・プログラマー、ごく稀にサーバーエンジニア、CS、PM、技術営業もやる何でも屋。IT業界の片隅で今日も元気に生きています。
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした