正文
关于dubbo2.6.3之后无法运行在tomcat的问题,看这里。
顶
原
荐
字数 398
阅读 90
收藏 0
jboot Dubbo Tomcat
最近由于 jboot 升级了dubbo,导致很多用户无法使用 jboot 在 tomcat 正常运行,会报找不到类会出现如下的问题:
org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:120) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
出现这个错误的原因并不是 jboot 去依赖或使用了spring的相关功能,而是由于在tomcat环境下,由于servlet 3.0 会去自动加载依赖所有 jar包的 web-fragment.xml。 这是 servlet 3.0 的标准。
从 dubbo 2.6.3 之后,dubbo.jar 内置了 web-fragment.xml
, web-fragment.xml
又去加载 org.springframework.web.context.ContextLoaderListener 进行 dubbo 内部的初始化过程,但是在 jboot 引入dubbo的时候,已经对spring 体系进行了排除,因此 tomcat 会出现如上的错误。
1、方案1、我已经向 dubbo 官方提出 issues 并给出解决方案 ,地址: https://github.com/apache/incubator-dubbo/issues/2570 ,这个需要等到官方的解决方案 或者 态度。 2、方案2、在自己的项目里,创建一个叫 org.springframework.web.context.ContextLoaderListener
实现接口 javax.servlet.ServletContextListener
, 不需要走任何的实现。例如: https://gitee.com/fuhai/jpress/blob/master/starter-tomcat/src/main/java/org/springframework/web/context/ContextLoaderListener.java 就不会再出现这样的错误。 3、方案3、若dubbo官方不解决这个问题,jboot可能考虑内置 org.springframework.web.context.ContextLoaderListener
这个类,做一个空的实现。
© 著作权归作者所有
共有人打赏支持
作为一个开源项目作者,是时候站出来拯救世界了!
领取条件:开源项目被开源中国收录的开发者可领取
开源中国十周岁啦~ 感谢 OSCer 一路同行
领取条件:领取开源报告并收获三位 OSCer 点亮即可领取
粉丝 839
博文 37
码字总数 36073
作品 5
昌平
其他
相关文章 最新文章
注:cas4.0.x+Tomcat7+Jdk7+redis3.0 CAS中的票据默认是存储在TicketRegistry中的,若是想要实现CAS服务端的集群,首先要做的是将票据共享到缓存中。 1.实现AbstractDistributedTicketRegist...
战五渣
2016/10/15
129
1
很多人都使用tomcat来作为java web项目的服务器,特别是在开发阶段,选择的人更多。本文所说的问题针对tomcat的开发环境,在正式环境中不会出现这个问题。 前段时间,在进行项目运行的时候出...
阿信sxq
2015/08/01
0
8
一、前言 怎样把已经开发的spring cloud 项目进行打包部署,其实过程和spring boot 的是一样的。经过摸索之后,才发现其实spring cloud 的每个Project 可以直接打成jar包运行,因为里面自带了...
上善若水
2017/09/05
0
0
本文的读者需要拥有一些Maven基础知识和实践,如果没有,请直接绕过或者先看一些关于Maven教程,比如Juven翻译的《Maven权威指南》,google一下便知。 开门见山,首先抛出一个问题(如果你对...
hyper0x
2012/02/27
0
0
我最近做项目出现了些问题,其中一个就是上传图片到服务器,成功显示出来了。但是到了后面过了段时间发现图片无法显示了,到tomcat的webapps目录里看看,项目前段时间上传的图片不见了。这是...
蜡笔小小小新
2015/09/22
167
0
没有更多内容
加载失败,请刷新页面
加载更多1>str = 'sed -i "s/include virtual=/"//_navigation//header_meta.html/"/include virtual=/"//zt//_navigation//header_meta.html/"/g" ' + uri_path2>str = 'sed -i "s/include vir......
坦途abc
14分钟前
1
0
问题描述:在爬取数据之后向远程数据库存相关数据时,出现该错误。 暂时解决方案:发现每次爬取较大量数据进行存储的时候会出现这种错误,而分批量爬取数据,然后再进行存储就不会出现这个问...
fang_faye
17分钟前
1
0
1、php安装的时有两种方式: (1):php作为apapche的模块形式存在,需要用apxs指定apapche位置,并且用apxs来自动的加载模块;需要结合apapche使用(处理动态请求); (2):php作为一个独立的服务...
芬野de博客
17分钟前
1
0
ElasticSearch的版本是elasticsearch-6.3.1 mysql的数据是5.7 logstash版本是6.3.1 ElasticSearch的插件elasticsearch-head-master ,现在加压好了,直接放在ElasticSearch目录下面就好了,这...
rechardchensir
18分钟前
2
0
先简单介绍一下map,C++中的map属于STL的范畴,通过key-value的方式保存。 map的插入,插入map有两种方式,一种是调用insert方法: map<int, int> m1; m1.insert(pair<int, int>(1, 20)); 第...
FLYUP_CHEN
21分钟前
2
0
没有更多内容
加载失败,请刷新页面
加载更多