4

我有一个Tomcat 7在 Windows Server 2008 上运行的 Struts 2 Web 应用程序(只有 Tomcat,没有 Apache 或 IIS)。应用程序中的文本存储在 .properties 文件中,并由 Struts 2 I18N Interceptor 管理。在 JSP 中,我使用<s:text name="menu.help" />标签。
有时(上个月两次),应用程序会丢失对属性文件的引用,因为它们已被卸载,并且它开始显示键。例如对于英语,它总是显示“帮助”,但是当我遇到这个问题时,它开始显示“menu.help”。我必须重新启动应用程序才能使其再次正常工作。
我在日志中查找了相关错误,但找不到与 I18n 或属性相关的任何内容。我也找了OutOfMemoryError,但也找不到。
你知道可能是什么问题吗?你能想到我可以解决它的任何方法吗?
谢谢

编辑:
这是我的 struts.xml 的相关部分:

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

属性文件(resources_en.properties, resources_es.properties, ...)位于WEB-INF/classes目录中。

4

2 回答 2

0

如果是内存问题,我建议您执行以下操作:

  1. 最小化属性文件的大小,看看这是否解决了问题。所以首先最小化尺寸,做一个负载测试,看看结果。
  2. 将其拆分为不同的属性文件,以查看是全部发生还是仅发生在其中一些

这是我个人的经验:

有时 JVM(错误地)会在一段时间不使用对象时对其进行垃圾收集。我对 JDK 4 和 oracle 应用程序服务器 9i 有同样的问题。当站点负载下降时,JVM 垃圾收集了数据库连接。所以,开发一个小的jsp页面(test.jsp),添加进去<s:text name="menu.help" />。然后,编写一个小应用程序,每 1 分钟请求一次该页面。

于 2013-08-31T06:38:14.643 回答
0

我认为您需要一个默认属性:resources.properties

当然,这一次你得到的是键而不是翻译,因为没有设置默认的语言环境。

于 2013-06-29T15:01:44.777 回答