在开发环境调试WAP版本官网,发现系统有问题,调用接口查询最新优惠信息时数组越界。经过与开发的外包厂商沟通,他们确定是因为栏目太久没有更新文章引起的,再询问具体细节,表示不清楚,因为外包开发人员调用的接口是另外一家外包厂商做的,且合同到期,开发人员流动,无法联系上。
没有源码,没有交接文档,只能自己排查摸索原因。
1.查看日志发现有之所以页面显示不出来文章是因为查询出来的dataset大小不对
2.在app机器登录mysql :mysql -h[ip address]-u[user] -p[password];
6.修改apache配置httpd.conf 发现其中有AddCharset UTF-8 .utf8
7.修改tomcat配置server.xml 找到port 8080,8009 添加 URIEncoding="UTF-8"
没有源码,没有交接文档,只能自己排查摸索原因。
1.查看日志发现有之所以页面显示不出来文章是因为查询出来的dataset大小不对
DEBUG AbstractBatcher:426 - about to open ResultSet (open ResultSets: 0, globally: 0)
2.在app机器登录mysql :mysql -h[ip address]-u[user] -p[password];
可以登录,show databases ,use database正常。
select user,host,password from mysql.user;一切正常。
排除数据库问题。
3. 继续看日志,发现一个地方很可疑:select article_id,title,display_release_time from tbl_node_article where node_id in (select node_id from tbl_node where node_name like '%??????????°????????????%') order by display_release_time desc limit 0,3;
将此语句放到工具中查询,结果正常,可以查询出来最新发表的三篇文章。怀疑是node_name 编码处理不对。
更改JSP页面,将查询的栏目名称从中文更改为英文栏目。
4.重启tomcat,发现结果正常。
5.由此推断是JSP传递参数由于是中文,到了Apache再传递给tomcat在传递给mysql,在此过程中引起的编码处理不当。6.修改apache配置httpd.conf 发现其中有AddCharset UTF-8 .utf8
7.修改tomcat配置server.xml 找到port 8080,8009 添加 URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" maxThreads="2000" minSpareThreads="25" enableLookups="false" acceptCount="100" connectionTimeout="30000" redirectPort="8443" disableUploadTimeout="true" />
8.问题解决。