- PR -

struts-config の分割について

投稿者投稿内容
Az
会議室デビュー日: 2006/05/09
投稿数: 5
投稿日時: 2006-05-09 15:53
お世話になります。
Strutsでコンフィグレーションファイルを分割した場合に発生している
問題があるので質問させてください。

http://www.atmarkit.co.jp/fjava/javatips/099jakarta015.html
より

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>
<!-- 登録モジュール -->
<init-param>
<param-name>config/reg</param-name>
<param-value>/WEB-INF/struts-config-reg.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>



登録モジュールのようにファイルを分割した場合

html(jsp)ファイル
<html:image page="/images/hoge.gif" alt="ほげ" />

と画像ファイルを指定したところ、画像ファイルが認識されなく
なってしまいました。

検証した結果
html のbaseタグを用いれば
http://localhost:8080/XXX/images/hoge.gif
となり問題ないのですが、

baseを用いない場合
http://localhost:8080/XXX/reg/images/hoge.gif
となってしまい画像をみることができません。

仕様としてbaseタグを用いない方法を調査しています。

[images/reg/hoge.gif] とregが入っている相対パスを力技で加工
するというのも考えたのですが、つくり上よろしくないと思ったので
質問させていただきました。

探し方が下手なのか、うまくみつける事ができなかったのですが
ソースレベルでなくweb.xmlの設定で回避するような方法はあるのでしょうか?

また、コンテキストファイルの分割はある程度規模が大きければ
行うのかと思いますが、そのばあい通常どのように回避しているのでしょうか?

[補足]
出力したHTMLのソースに画像ファイルを呼び出そうとしている
タグは
<img src="/XXX/images/hoge.gif" alt="ほげ">
となるはずが
<img src="/XXX/reg/images/hoge.gif" alt="ほげ">
となってしまっています。



[ メッセージ編集済み 編集者: Az 編集日時 2006-05-09 16:06 ]

[ メッセージ編集済み 編集者: Az 編集日時 2006-05-09 16:21 ]
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-05-09 16:29
コード:
<param-value>/WEB-INF/struts-config.xml, /WEB-INF/struts-config-reg.xml</param-value>


とカンマで区切ればいいのでは?

#つか、http://www.atmarkit.co.jp/fjava/javatips/099jakarta015.htmlにそう書いてあるし..
Az
会議室デビュー日: 2006/05/09
投稿数: 5
投稿日時: 2006-05-09 16:42
大変申し訳ありません、指摘ありがとうございます。
記述ミスというかコピペミスをしていました。

実際に動作確認してるファイル ,(カンマ)区切りしております。

コード:
<init-param>
	<param-name>config/reg</param-name>
   	<param-value>
       	/WEB-INF/struts-configs/struts-config.xml,
      	/WEB-INF/struts-configs/struts-config2.xml,
	    /WEB-INF/struts-configs/struts-config3.xml,
    </param-value>
</init-param>



また、抜粋して記述してしまいましたが
<param-name>config/reg2</param-name>
<param-name>config/reg3</param-name>
のように複数のparam-nameを用いたいと考えています。

エラー自体は回避できていない状態です。
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-05-09 16:53
引用:
また、抜粋して記述してしまいましたが
<param-name>config/reg2</param-name>
<param-name>config/reg3</param-name>
のように複数のparam-nameを用いたいと考えています。


意味不明。抜粋せず、どうしたいのかちゃんと書きましょう。

いずれにしても、モジュール化した場合、ベースディレクトリが変わるのは仕様通りです。
ベースディレクトリを変えたくない、でもstruts-config.xmlは分割したい、という要望であれば、
コード:
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config1.xml, /WEB-INF/struts-config2.xml</param-value>


とすれば、いいような気がします。
Az
会議室デビュー日: 2006/05/09
投稿数: 5
投稿日時: 2006-05-09 17:13
回答ありがとうございます。
拙い説明になってしまい申し訳ありません。


例)
コード:
<init-param>
    <!-- 参照するstruts-configのマッピング -->
    <param-name>config</param-name>
    <param-value>
            /WEB-INF/struts-configs/struts-config1.xml,
            /WEB-INF/struts-configs/struts-config2.xml,
    </param-value>
</init-param>
<init-param>
    <param-name>config/reg</param-name>
    <param-value>
            /WEB-INF/struts-configs/struts-config3.xml,
            /WEB-INF/struts-configs/struts-config4.xml
    </param-value>
</init-param>
<init-param>
    <param-name>config/reg2</param-name>
    <param-value>
            /WEB-INF/struts-configs/struts-config5.xml,
            /WEB-INF/struts-configs/struts-config6.xml,
            /WEB-INF/struts-configs/struts-config7.xml
    </param-value>
</init-param>


各init-paramを上記のようにおこないたいのですが

引用:

<param-name>config</param-name>
<param-value>/WEB-INF/struts-config1.xml, /WEB-INF/struts-config2.xml</param-value>



param-nameで分け、且つサブアプリケーションに分割したい場合
はベースディレクトはどうしても変わってしまうということですかね?

引用:

ベースディレクトリが変わるのは仕様通りです。


とありますがこの辺の情報を抑えるにはSUNの英語サイト
をみているんでしょうか?

よろしかったら英語でも解読してみたく思いますので
URLをおしえてもらえないでしょうか?
TOPページからだとたどりきれなくて・・・

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-05-09 18:55
StrutsはSunとは関係ありません。
Apacheによって提供されています。

http://struts.apache.org/

大きい本屋さんに行けば、解説本も沢山ありますよ。
Az
会議室デビュー日: 2006/05/09
投稿数: 5
投稿日時: 2006-05-09 19:09
あ”・・・
strutsはsanじゃないですね

本自体は[Struts イン アクション] 片手に調べていますが
乗ってなくて・・・
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-05-10 08:49
引用:
Azさんの書き込み (2006-05-09 19:09) より:
あ”・・・
strutsはsanじゃないですね


sanじゃなくって、Sunですってばwwww

あと、この辺を読むと分かるかも?
http://struts.apache.org/struts-doc-1.2.9/userGuide/configuration.html#dd_config_servlet

また、引用されている@ITの記事にもそう書いてありますね。

スキルアップ/キャリアアップ(JOB@IT)