电话
02088888888
今天就唠唠这个JavaWeb企业门户的事儿,全是最近自己趟坑的血泪史。你们也甭笑话,这事儿搞起来是真的一波三折。
刚接到需求说要搞个企业门户网站,寻思着不就是个展示型网站嘛JavaWeb老本行了,应该没啥问题。结果刚伸手就挨了一闷棍!先是环境配置就折腾了老半天。服务器用Tomcat对,结果那个JDK版本和项目要求的死活对不上,不是高了就是低了,报错信息看得我眼晕,才发现是服务器上装了两个版本的JDK,环境变量打架。一上午就这么稀里糊涂过去了。
想着门户嘛内容都是后台发文章前台展示,数据库随便弄弄。结果真上手建表了,才发现问题一大堆。字段类型定义没想清楚,有些字段明明用个布尔值 tinyint(1) 就能搞定的事儿,最开始用了 varchar,还有存储文章内容的长文本,用 text 还是 mediumtext 也犹豫半天。更坑的是完全没考虑编码问题,项目跑起来,往库里插中文文章,好家伙,全变成????了!手忙脚乱地查配置,改数据库连接串,加那一堆 ?characterEncoding=utf8&useUnicode=true,改了半天才正常。
SQL注入更是提心吊胆。知道要用预编译 PreparedStatement,但写代码时总有疏忽,特别是拼接模糊查询条件 like %xxx% 的时候,有一次差点忘记处理,冷汗都下来了。
UI模板拿了一套看着挺酷的,往 JSP 里集成。这下可路径引用问题来了!图片加载不出来,CSS文件404,JS脚本失效。页面上那些静态资源路径,一会儿是项目根目录,一会儿是模板文件夹下,部署到服务器上路径又变了。各种相对路径绝对路径试到头大,是用了绝对路径加上 ${*} 才勉强算准。
本地开发跑得溜溜的,以为胜券在握。一部署到外网服务器,心态直接崩了!
是服务器性能太次,买的便宜共享虚拟主机,稍微有点访问量就卡成PPT,页面半天刷不出来。咬牙换了个好点的云服务器。
然后发现 Tomcat 内存根本不够吃!网站运行几天就开始报内存溢出错误 PermGen Space OOM。命令行加了一堆 -Xms、-Xmx、-XX:PermSize、-XX:MaxPermSize 参数重启才活过来。这还是在Linux上敲的命令行,搞不明白还得查半天。
最无语的是数据库连接。部署后访问量一上来,数据库连接池连接被占光了,新用户死活登不上。得,DBCP配置里的最大连接数 maxActive 设小了呗!还得重启应用。
文件上传也是坑得不行。用户上传图片或者附件,本地测试好好的,上线后文件没影了。折腾半天发现是权限问题,Web应用没有权限往指定的服务器硬盘目录写文件。又是一通设置权限,改上传路径配置。
会话管理更是玄学。用户登录状态莫名其妙就掉了,特别是在多个页面间跳转的时候。刚开始以为是会话过期时间设短了,改了session的超时时间还是不行,后来才意识到是部署到了多台服务器做负载均衡,但压根没配置分布式Session共享!
搞这么一圈下来,人都瘦了三斤。哪是什么技术问题,基本全是这些鸡毛蒜皮却又致命的小坑。环境版本要看清、数据库设计要仔细(编码、字段)、路径引用要写对、编码统一要强制、重复提交要防范、服务器资源要给够(CPU、内存、连接数)、上传权限要设置、Session共享别忘记... 还有日志要打不然出问题两眼一抹黑只能靠猜。
这经验真是一锤子一锤子砸出来的。为啥我懂这么多坑?说出来你们可能不信。因为这个项目差点把我饭碗搞砸!就因为这个项目上线后问题不断,领导开会时指着我鼻子骂。那天实在憋屈,散会后站起来太急,脚一软脑袋咣当磕会议室大玻璃门上了。嗡的一声,眼前全是星星。去医院一查,轻微脑震荡,还被工友们起了个外号叫“铁头哥”。
现在想起来,都是泪!你们做门户网站可别踩我这些坑了。技术本身真不难,难的是把这些细节都考虑周全了。
邮箱:youweb@qq.com
Q Q:http://wpa.qq.com/msgrd?v=3&uin=88888888&site=qq&menu=yes