3

sruts 2(2.1.8.1)アプリケーションをjboss AS(5.1.0-GA)で実行しています。a.warとb.warを同じ/server/ default / deployパスに配置し、struts2libsを/server/ default/libパスに配置します。

アプリまたはサーバーにエラーメッセージはありませんが、何らかの理由でhttp:// localhost:8080 / b /と入力すると、b.jspページが表示され、アプリケーションのメッセージリソースにメッセージが表示されます。

だから、私の質問は、サーバーの/libにstrutsjarを配置すると、すべてのアプリケーションが同じものを使用する必要がある値スタックのインスタンスが1つだけ作成されるということです。もしそうなら、アプリケーションごとに異なるインスタンスを作成するために何ができますが、jarをサーバーpahtに保持しますか?

ストラットジャーを戦争に戻す必要がありますか?

ありがとう

strutsタグを使用してシステムタイトルを取得するim

<s:property value="%{getText('system.title')}"/>

これはa.warの私の設定です:

/WEB-INF/classes/a-message-resources.properties

system.title=Namefor system A

struts.xmlで私は持っています

<constant name="struts.custom.i18n.resources" value="a-message-resources" />

これはb.warの構成です

/WEB-INF/classes/b-message-resources.properties

system.title=Namefor system B

struts.xmlで私は持っています

<constant name="struts.custom.i18n.resources" value="b-message-resources" />
4

1 に答える 1

4

ここで何が起こっているかを知ることができると思います。

値はトークン化され、struts.custom.i18n.resources各トークンが に追加されますLocalizedTextUtil.DEFAULT_RESOURCE_BUNDLES。これは文字列の静的な最終リストです。リストに項目 (system.title など) を追加する前list.remove()に、同じトークンで呼び出され、system.title の以前のエントリが削除されます。

このフィールドは静的であり、メッセージごとに 1 つのエントリしか許可されないため、最初に読み込まれた system.title プロパティが次のプロパティによって上書きされます。

また、JBoss インスタンスがこのクラスを、静的変数を共有する方法でロードしているようです。アプリケーションごとに個別にこのクラスをロードするように JBoss を設定できる場合があります。 ここから始めるのがよいかもしれません

于 2012-05-05T04:00:18.457 に答える