jsp文件服务器错误,服务器日志中出现大量异常:file:/wap/portal/status.jsp not found | IT人生录...

Liferay版本:6.1.1

今天发现服务器portal/logs目录下面的日志中出现了大量的下面的的异常。分析解决思路如下:

1、正常的访问没有任何异常;

2、根据异常的堆栈信息可以看到里面有wap的字样,怀疑是移动设备访问时出现的,使用手机访问(Android设备),用手机版chrome、UC、QQ浏览器访问。之所以用这么多浏览器,是因为基于之前对Liferay的了解,liferay识别是否是移动设备,主要是根据头信息里面的accept里面是否包含wap.xhtml字符串来判断的,现在的手机上的浏览器,很多都不再在请求里面附加这样的内容,经测试只有QQ浏览器,默认的时候会在请求里面添加wap.xhtml。

3、在手机上访问会进入到手机的主题,由于此系统没有单独开发手机的主题,所以进入的页面中只有菜单,后台中也无异常。

4、再次观察异常,是/wap/portal/status.jsp这样的页面找不到,根据liferay正常的情况,要进入html/portal/status.jsp的情况是出出404的时候,所以在手机浏览器的地址栏里面输入一个不存在的URL,在控制台中重现异常。

5、到现在问题的原因知道了。当使用某些手机浏览器访问的时候,liferay会识别为手机的主题,访问不存在的页面时,会出现此问题,但是手机主题里面没有提供找不到页面时的处理页面,所以出现了此问题。

解决方法:

现在知道问题,要解决基本上是让liferay不再识别手机访问(也没有开发手机主题,识别也没意义),将所有的请求都转向到正常的浏览器访问的请求。

但是Liferay并没有提供一个配置项来进行配置是否禁用掉wap,所以只有自己修改Liferay源码了

关键代码为:com.liferay.portal.servlet.browserSnifferImpl.java里面的isWapXhtml()方法

注释掉里面处理内容,让他直接返回false,如下图

35884c7589f9c517eef1f013dc01e577.gif

然后对Liferay源码进行编译,打包,然后复制portal-impl.jar覆盖服务器上的即可。

05:46:18,887 ERROR [http-apr-80-exec-550][LiferayMethodExceptionEventHandler:33] javax.servlet.ServletException:
 File "/wap/portal/status.jsp" not found

javax.servlet.ServletException: File "/wap/portal/status.jsp" not found

at org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:412)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)

at org.apache.jsp.wap.common.themes.portal_jsp._jspx_meth_liferay_002dtheme_005finclude_005f0(portal_jsp.java:421)

at org.apache.jsp.wap.common.themes.portal_jsp._jspService(portal_jsp.java:396)

at com.liferay.portal.struts.StrutsUtil.forward(StrutsUtil.java:79)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值