[英]Maximum language.properties file size in liferay custom portlets
当我尝试添加包含数千个带有长文本值的键的Language.properties文件时。 无法使用<liferay-ui:message key="xyz" />
检索我的jsp文件中的值。 它不显示任何值,也不在其输出中推送键。 我可以知道它支持的最大密钥数或最大文件大小吗? 我将Liferay 6.0.6与Tomcat捆绑包一起使用。
在我的属性文件中,它包含7600行,具有较大的键值。
InputStream stream = application.getResourceAsStream("/abc.properties");
Properties prop=new Properties();
prop.load(stream);
如果我使用上面的代码从另一个属性文件中检索数据,则会出现以下错误。
08:14:08,936 ERROR [jsp:154] java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
at java.util.Properties.loadConvert(Properties.java:569)
at java.util.Properties.load0(Properties.java:392)
at java.util.Properties.load(Properties.java:342)
at org.apache.jsp.html.ahadith.sb_005fview11_jsp._jspService(sb_005fview11_jsp.java:158)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at com.liferay.portlet.PortletRequestDispatcherImpl.dispatch(PortletRequestDispatcherImpl.java:316)
at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:105)
at com.liferay.util.bridges.mvc.MVCPortlet.include(MVCPortlet.java:328)
at com.liferay.util.bridges.mvc.MVCPortlet.include(MVCPortlet.java:343)
at com.liferay.util.bridges.mvc.MVCPortlet.doDispatch(MVCPortlet.java:291)
在此先感谢Shahbaz Khan
Liferay Portal本身在平台的文件中带有〜7400行,它们可以正常工作。 您遇到问题的大小顺序是多少? 我不知道任何与大小相关的限制,只是将其保留在内存中。
不过,您应该注意编码,并确保文件是UTF-8编码的。
另一种检查您是否真正受大小影响而不是受引起异常的特定值(是否检查了日志文件?)的方法是:
此外,考虑到整个门户网站(已经是一个令人印象深刻的规模)与〜7400个按键相结合,就成千上万种语言按键而言,这听起来像是一个安静的印象。 几乎值得质疑的是是否有必要进行体系结构更改-但这仅仅是一种直觉,您会比我更了解您的应用程序,并且可以判断其中需要哪种翻译。
编辑 :现在,您已经编辑了问题,包括实际的堆栈跟踪:是的,您遇到了编码问题。 使用jdk的native2ascii
程序将ISO-8859-1编码的属性文件转换为UTF-8。 然后通过Liferay使用该文件:好像您正在从jsp中读取该文件一样-这意味着您很可能会在每个页面请求中都这样做,这是一种降低门户性能的简便方法。
请注意,Liferay读取属性文件为UTF-8,而Properties.load(Stream)
始终采用ISO-8859-1,因此您必须在使用<liferay-ui:message key="some-key"/>
与加载之间做出决定。资源自己打包。 两者都不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.