关于download项目的一点总结
2016-12-05 00:00
330 查看
背景
网站有很多table提供download all的功能,简单来说就是能将table的全部数据以CSV的文件形式发送到客户的注册邮箱。动辄几千万的数据量注定这个功能不适合在前台Tomcat中完成,所以才有一个单独的项目负责处理客户的请求,以队列形式完成客户请求。这个功能之前和后台的项目是整合在一起的, 主要做法是把前台的DAO等逻辑复制到后台,通过读取客户提交的参数模拟和前台一样的查询,最后的出结果发送给客户。
存在的问题
前台的代码会经常改动,如果前台改了代码后台就要同步改动。相当于一个功能的修改需要在前后台同步修改2次,非常的低效,而且copy代码让人抓狂。如果一个功能前后台长期不同步(各种原因)那么如果要同步一次那将是毁天灭地的体验。解决方案
将前台的项目改为Maven管理,利用Maven的多模块化将DAO抽离一个单独项目,新建的download项目引入DAO的依赖,这样可以一劳永逸。前台修改以后新的项目只需要compile就可以,很方便。将前台项目copy一份,将用户的参数保存然后传入自建的request,直接调用controller层。最后获得controller返回的response。这不是HTTP请求,只是一个简单的方法调用。但是controller层并不知道这不是HTTP请求。以后每个周只要merge和前台不同的代码即可。
抉择
最终确定方案2,前台是一个7年老项目,没有用Maven,改成Maven然后抽离DAO风险和工作量太大。第二个方案前期工作量大,但是也是一劳永逸。
踩坑
Web项目改成Java项目需要修改很多配置Hibernate配置的数据库连接池要继续保留,但是connection的数量要缩小。因为不是web项目不需要这么多connection。
其他的JDBC的Driver最好用dbcp或者mybits等等
采用注解导入DAO的时候一定要注意不要出现启动死循环。如果在扫描一个package的同时这个package中出现SpringBeanFactory的getBean的话,就会出现扫描--》loadXML--》扫描 的死循环
Couldn't get connection because we are at maximum connection count (30/30),这个错误是因为Hibernate的管理链接池的释放标准问题.之前WEB项目是自动释放链接.转换为JAVA项目因为链接数量需求很大,所以要把Hibernate配置的中的链接管理改为事务结束立即释放.<prop key="hibernate.connection.release_mode">after_transaction</prop>
相关文章推荐
- 周报(关于项目开发模式的一点总结)
- 关于新建android项目时 appcompat_v7报错问题的一点总结
- 做项目时,关于 "StringBuilder" 的总结
- 项目日志(5)关于进度总结及展望
- 摘要:本篇是本人在做一个大数据项目时,对于系统架构的一点总结,如何在保证存储量的情况下,又能保证数据的检索速度。
- 关于PCA算法的一点学习总结
- 关于技术人员转到项目经理的一点思考
- 最近一个项目中关于NGUI部分的总结
- ASP.NET&C#学习笔录3(关于vs2005、vs2008和vs2010项目互转的总结 )
- 关于项目结束时的工作总结
- 关于三种『应用内主题切换』开源项目的一点思考
- 关于linux串口编程的一点总结
- 北漂三年,关于生活和工作的一点总结
- 关于项目管理的一点体会
- 关于课程答辩一点总结
- 实现Winform应用系统自动升级 ---------关于服务器端配置文件以实现的一点总结
- 关于微信小程序的一点个人总结
- 关于各种编码问题,汉字处理的一点小总结
- 项目总结(三)--- 关于版本控制器
- 关于vs2005、vs2008和vs2010项目互转的总结