文档章节

关于download项目的一点总结

LeoXu1990
 LeoXu1990
发布于 2016/12/05 17:52
字数 724
阅读 11
收藏 0

背景

    网站有很多table提供download all的功能,简单来说就是能将table的全部数据以CSV的文件形式发送到客户的注册邮箱。动辄几千万的数据量注定这个功能不适合在前台Tomcat中完成,所以才有一个单独的项目负责处理客户的请求,以队列形式完成客户请求。

    这个功能之前和后台的项目是整合在一起的, 主要做法是把前台的DAO等逻辑复制到后台,通过读取客户提交的参数模拟和前台一样的查询,最后的出结果发送给客户。

存在的问题

    前台的代码会经常改动,如果前台改了代码后台就要同步改动。相当于一个功能的修改需要在前后台同步修改2次,非常的低效,而且copy代码让人抓狂。如果一个功能前后台长期不同步(各种原因)那么如果要同步一次那将是毁天灭地的体验。

解决方案

  1. 将前台的项目改为Maven管理,利用Maven的多模块化将DAO抽离一个单独项目,新建的download项目引入DAO的依赖,这样可以一劳永逸。前台修改以后新的项目只需要compile就可以,很方便。
  2. 将前台项目copy一份,将用户的参数保存然后传入自建的request,直接调用controller层。最后获得controller返回的response。这不是HTTP请求,只是一个简单的方法调用。但是controller层并不知道这不是HTTP请求。以后每个周只要merge和前台不同的代码即可。

抉择

    最终确定方案2,前台是一个7年老项目,没有用Maven,改成Maven然后抽离DAO风险和工作量太大。

第二个方案前期工作量大,但是也是一劳永逸。

踩坑

    Web项目改成Java项目需要修改很多配置

  1. Hibernate配置的数据库连接池要继续保留,但是connection的数量要缩小。因为不是web项目不需要这么多connection。
  2. 其他的JDBC的Driver最好用dbcp或者mybits等等
  3. 采用注解导入DAO的时候一定要注意不要出现启动死循环。如果在扫描一个package的同时这个package中出现SpringBeanFactory的getBean的话,就会出现扫描--》loadXML--》扫描 的死循环
  4. 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>

© 著作权归作者所有

共有 人打赏支持
LeoXu1990
粉丝 0
博文 17
码字总数 9038
作品 0
青岛
后端工程师
私信 提问
nginx同胞兄弟tengine

前言 简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤。 简介与安装 Tengine是淘宝发起的web服务器项目,简单的讲就是对nginx进行了二次开发并提供了更丰富的功能,官网地址:htt...

李伟铭k
07/09
0
0
转载-查看mysql语句运行时间的2种方法

网站运行很慢的时候,我就特别起知道为什么这么慢,所以我查啊查,数据库绝对是很重要的一部分,里面运行的sql是绝对不能放过的。平时做项目的时候,我也会注意sql语句的书写,写出一些高效的...

筱飞
2016/04/28
10
0
PhpStorm中如何配置SVN,详细操作方法

1.简介: PhpStorm是一个轻量级且便捷的PHP IDE,其提供的智能代码补全,快速导航以及即时错误检查等功能大大提高了编码效率。它是一款商业的 PHP 集成开发工具,以其独特的开发便利性,短时...

slagga
2016/08/31
358
0
Unity调用Android的Activity

之前http://shuxiayeshou.blog.51cto.com/4452347/1932216 写了关于Unity与Android结合所遇到的问题及解决方法 总结一下,Unity做一个简单的场景,AndroidStudio建一个简单的项目,其中MainA...

lreach
2017/06/05
0
0
【分享】关于分享与学习

计划在工作业余时间,把之前工作学习的东西做总结、做分享与大神一起讨论一起学习一起进步! 每天分享一点,世界更美好一点!!! 故:在目前比较活跃的开源中国社区开博客,也是向开源精神致...

Auhgnahz
2015/12/23
89
0

没有更多内容

加载失败,请刷新页面

加载更多

矿难让显卡压了那么多货咋办?NV如是说

在苏州 GTC 开幕的几天前,英伟达刚刚遭遇了一次股价的腰斩。 近来加密货币的热度渐低,受到挖矿热潮照顾许多的英伟达「矿机」销量受到打击,甚至出现了严重的库存危机,加上近来刚刚发的 RT...

linux-tao
14分钟前
1
0
Python学习日记5|BeautifulSoup中find和find_all的用法

Python学习日记5|BeautifulSoup中find和find_all的用法 是蓝先生 关注 2016.04.20 11:26* 字数 930 阅读 37205评论 11喜欢 10 今天是4.20号。 前天晚上看到蒋方舟的一句话: 不要左顾右盼。慢...

linjin200
14分钟前
1
0
浅析Vue.js 中的条件渲染指令

1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件。 html: <div id="app"><p v-if="type===1">拌面</p><p v-else-if="type==...

开元中国2015
15分钟前
1
0
聊天机器人最难理解的 10 个词汇

简评:现在,越来越多的「聊天机器人」凭借着人工智能能与人类对话,甚至编写新闻。人们该如何判断对方是一个血肉之躯,还是一个可笑的算法?又该如何判断一个小说故事是由一台机器编写的,而...

极光推送
20分钟前
1
0
开源 java CMS - FreeCMS2.8会员我的评论

项目地址:http://www.freeteam.cn/ 我的评论 从左侧管理菜单点击我的评论进入。在这里可以查看当前登录会员的所有评论记录。 删除评论 选择评论然后点击删除按钮可以完成删除操作。 为了防止...

freeteam
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部