MVC常见问题
By:wendal<wendal1985@gmail.com>

tomcat报readUnsignedShort

Top

部署到生产环境时(tomcat版本一般较低), 出现类似这样的报错,然后tomcat无法启动:

java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340)
at org.apache.tomcat.util.bcel.classfile.Utility.swallowMethodParameters(Utility.java:796)
at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:171)
at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:57)
at org.apache.tomcat.util.bcel.classfile.Method.<init>(Method.java:71)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:267)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:127)

原因:

Top

解决版本:

Top

出现nutz日志之前,停顿几十秒到几分钟不等:

Top

该情况只出现在老版本的Linux系统,卡顿结束后,第一条日志类似

INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [301,654] milliseconds.

原因: 由于linux下/dev/random极其低效,导致SecureRandom初始化非常慢

解决方案: 添加启动参数

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/urandom"

IE下ajax当下载

Top

原因: 新版的@Ok("json")的Content-Type设置为"application/json", 在IE下会有毛病.

解决版本: 在MainModule添加@SetupBy(MainSetup.class), 然后MainSetup类实现Setup接口,在init方法内内添加下列代码

UTF8JsonView.CT = "text/plain";