2013-03-13 108 views
4

我有一个运行在Windows Server 2008(仅Tomcat,没有Apache或IIS)上的Tomcat 7上的Struts 2 Web应用程序。应用程序中的文本存储在.properties文件中,并由Struts 2 I18N拦截器进行管理。在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目录。

+1

你可能想在这个的Struts用户邮件列表上发布。我怀疑有东西被垃圾收集,但不知道它会是什么。 – 2013-03-13 18:42:58

+0

你尝试排除故障吗?你尝试手动切换区域设置吗? – 2013-03-13 19:17:20

+0

@RomanC我有可能在应用程序中切换语言,并且在重新启动应用程序之前它不适用于任何语言。 – 2013-03-13 20:16:49

回答

0

我想你需要一个默认属性:resources.properties

Surelly这个时候你拿到钥匙,而不是翻译是因为默认区域未设置。

0

如果是内存的问题,我建议你做如下:

  1. 减少财产文件的大小,看是否能解决问题。因此,请首先将尺寸最小化,进行负载测试并查看结果。
  2. 它拆分到不同的属性文件,看看是否发生这种情况,所有的人或只是其中的一部分

这是我个人的经验:

有时JVM(错误)垃圾收集对象当它不被使用一段时间。我有与JDK 4和Oracle应用服务器9i相同的问题。当站点负载下降时,JVM垃圾回收器收集数据库连接。所以,开发一个小的jsp页面(test.jsp),给它添加<s:text name="menu.help" />。然后,每1min写一个请求这个页面的小应用程序。