发表于: 2017-02-22 23:53:40
1 2178
今天完成的事情:
1、部署两台WEB两台Service,实现随机访问,完成任务8
明天计划的事情:
1、 开始任务9,
2、熟悉萝卜多复盘项目
遇到的问题:
1、昨天按黄超师兄日报里的思路写了controller里处理随机访问的逻辑,但是实际操作遇到问题,报错没有解决,黄超师兄的思路是为了减小服务器的压力,不用每次访问都要重新获取连接,所以用来catch里面有嵌套了一层try/catch,这样就有了三层逻辑,在第三层中加入了重新获取连接的代码,这种思路是很巧妙,不过用注解这样做的话需要使用非单例模式,单例模式不能再创建一个新的bean,而我遇到的问题就是使用非单例模式的话tomcat启动时就会报错:
这种错误我已经遇到还多次了,一直没彻底搞懂,spring框架一直没有系统的学一遍,很多都是用到什么才学什么,遗留了很多问题,学的知识也都是一段一段的不能练成片不成体系。
2、在eclipse中直接配置本地tomcat启动,一切正常,但是用插件的方式启动的话就不对了,pom.xml中配置tomcat插件:
用的是tomcat7,端口是9090,启动后发现端口是8080,访问时报错:
报错信息说HttpServletRequest没有getServletContext()方法,但是用本地配置tomcat的话是没问题的。
解决方案:这又是个不该犯的错误,最后发现是我的Run Configurations配置错了,
tomcat-maven-plugin插件和tomcat7-maven-plugin插件的用法是不一样的,启动时,tomca-maven-plugin要用tomcat:run启动,而tomcat7-maven-plugin要用tomcat7:run启动,我用的是tomcat7-maven-plugin,把Goals设置成tomcat7:run后就正常了,端口也改成了9090:
3、提个建议:
编辑界面提交和取消按钮能不能换下位置,好几次把取消当提交点了,经常写日报的应该有体会
收获:
1、部署两台service,不用注解的形式了,改成每次访问都手动获取bean,这样做的坏处就是对服务器造成额外压力,当然好处也有,不用catch中再嵌套一层try/catch了,逻辑更清晰也更容易理解:
测试:
说明,产生的随机数是1就访问service1,随机数是2就访问service2
1)service1和service2都正常运行时,访问了四次:
2)现在把service1关闭,再访问了三次:
当产生的随机数是1,即访问service1时会进入第二层切换到service2访问,如果产生的随机数是0,直接访问service2.
3)把service1重启后再访问:
可以看到service1已经重新获得连接,只要service1和service2其中一个正常运行,就能正常访问。当然这个也是要使用非单例模式的。
2、部署两台service,两台web,一共有四台服务器:
其中1、2是service,3是通过tomcat插件启动的WEB,端口号是9090。4是通过本地tomcat部署的WEB,端口号是8080
通过Nginx配置两台WEB随机访问,nginx.conf配置:
启动nginx,通过nginx负载均衡实现两台WEB随机访问两台service:
测试了一下,一共访问四次:
3、以前都是用IDEA上传,今天Eclipse中使用Git上传代码到GitHub:
评论