gpt4 book ai didi

struts2 - 2 个不同的 struts 应用程序使用相同的 ValueStack

转载 作者:行者123 更新时间:2023-12-02 18:10:22 25 4
gpt4 key购买 nike

我正在 jboss AS (5.1.0-GA) 中运行我的 sruts 2 (2.1.8.1) 应用程序。我将 a.war 和 b.war 放在同一个/server/default/deploy 路径中,并将 struts 2 库放在/server/default/lib 路径中。

应用程序或服务器中没有错误消息,但是当我输入 http://localhost:8080/b/ 时由于某种原因,我进入了 b.jsp 页面,应用程序 a 的消息资源中的消息。

所以,我的问题是:将 struts jar 放在服务器的/lib 中只会创建所有应用程序必须使用相同的值堆栈的一个实例?如果是这样,我该怎么做才能为每个应用程序拥有不同的实例,但将 jar 保留在服务器路径中?

我应该把struts jars带回 war 中吗?

谢谢

我使用struts标签来获取系统标题

<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" />

最佳答案

我想我可能知道这里发生了什么。

struts.custom.i18n.resources 值已标记化,每个标记都会添加到 LocalizedTextUtil.DEFAULT_RESOURCE_BUNDLES 中。这是一个静态的最终字符串列表。在将项目添加到列表(例如 system.title)之前,会出于同样的原因调用 list.remove(),删除 system.title 的任何先前条目。

因为该字段是静态的,并且因为它只允许每条消息输入一个条目,所以无论先加载哪个 system.title 属性,都会被下一个属性覆盖。

此外,您的 JBoss 实例似乎正在以导致共享静态变量的方式加载此类。您可以将 JBoss 配置为为每个应用程序单独加载此类。 This might be a good place start .

关于struts2 - 2 个不同的 struts 应用程序使用相同的 ValueStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com