spring context 初始化两次导致dub…
来源:互联网 发布:pp助手 mac 编辑:程序博客网 时间:2024/06/05 18:29
背景:一个刚开发完的小项目部署到测试环境,总是部署失败,直观的报错是error日志中有dubbo端口被占用。项目为springmvc框架+tomcat。
错误日志为:
继续找日志,tomcat日志,应用的error日志,都已经看了,那只剩下应用的info日志了。没办法大量的info日志,一条一条读吧。
还真让我发现了问题!!
那么问题来了,为什么会启动两次呢?本地跑是正常的呀。
比较了应用配置,和其他能够正常启动的应用也是一样的。
就随便看看tomcat配置吧,比较下同一台测试机器上的两个应用,一个是有问题的,一个是正常的。
还真不太一样,在server.xml:
正常的:
不正常的:
这两个配置不知道具体什么含义,先改成和正常的一样试试吧。
改了,还真就正常了,springcontext只启动一次,dubbo端口也不再被占用。
那么下边来查查tomcatserver.xml中,autoDeploy和deployOnStartup的含义。
摘抄:
http://www.cnblogs.com/ywl925/archive/2013/02/28/2936926.html
autoDeploy:如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新有web应用加入进来,会自运发布这个WEB应用
unpackWARs:如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行.如果设为false将直接运行为WAR文件
http://kalogen.iteye.com/blog/910326
如果将autoDeploy设置为true,就会发生再次部署的现象,第一次因server.xml中的Context配置而被部署(因为deployOnstartup="true"),
而第二次因autoDeploy被设置为true而发生自动部署(默认情况下,在没有显式Context的这些属性时,它们每个的默认值都是true)。
显式设置autoDeploy为False。避免了在server.xml中增加Context配置时两次部署相同的Web应用程序。
=================关于上述问题的其它解决方案==============================================
除了修改tomcat的部署配置文件server.xml以外,如果是两个项目在同一个tomcat里启动(生产者provider---消费者consumer模型,即:服务的提供者和使用者),或者可以将使用的两个项目部署在不同的tomcat里,仅需要修改server.xml中的HTTP协议端口8080,AJP协议端口8009以及用来SHUTDOWN的关闭端口8005为其它未使用的端口就行。
- spring context 初始化两次导致dub…
- spring context 初始化两次导致dubbo端口被占用
- spring context 初始化两次导致dubbo端口被占用
- spring context 初始化两次导致dubbo端口被占用
- spring - context:component-scan
- 关于Context []startup fail…
- Struts 2 + Spring 2.0 + Hibernat…
- Lesson 85 Paris in the spring 巴…
- Spring MultiActionControlle…
- Spring Bean装配
- Spring AOP1
- Spring AOP2
- Spring AspectJ
- Spring 事务管理(一)
- Spring 事务管理(二)
- spring security+cas 中…
- spring security rememb…
- Bug导致的 enq: DX - contention等…
- https原理及tomcat配置https方法
- 第四周项目5-循环双链表应用
- html5 使用websocket发送图片文件…
- 渗透工具汇总(持续更新)
- Tomcat的HTTP与AJP协议
- spring context 初始化两次导致dub…
- Java多线程-工具篇-BlockingQueue
- Win10 一周年更新版1607&nbsp…
- AtomicInteger简介
- Maven讲解之 什么是Maven
- websocket与html5实现批量大文件逐…
- hessian 客户端报警告:Hessi…
- springMVC 几种页面跳转方式
- Promise 对象