jetty

使用RunJettyRun插件,项目运行正常,截图如下:

使用嵌入式方式运行,打不出启动成功的标记,截图如下:

开始尝试解决问题:

1、由于“springmvc”是web.xml里面关于SpringMVC的servlet,尝试把SpringMVC相关的内容都去掉,依然没有打出启动成功的日志

2、尝试着访问了一下antispider-server提供的Thrift服务和Web服务,结果都是正常的,很是疑惑,这个时候怀疑:RunJettyRun插件(这相当于Jetty容器)和Bootstrap(这相当于Jetty内嵌),对于SpringMVC或者Web项目的处理方式,有很大不同,导致没有正常启动完毕。

评:这实际是由于对Jetty理解不深刻,胡乱猜忌Jetty了,如果作为容器和嵌入式,有很大的差别,这简直是不可想象的。

由于没有解决问题,结合Bootstrap源码,关注以上图示中的“第一点”和“第二点”

第一点:这一点没啥好说的,就是src/main/resource下没有config.properties,对于结果没有影响,期间经历一个小插曲,hotel-campaigns-web项目,没有config.properties文件,也没打这行日志,经查是因为依赖的sinai.client里面有config.properties

第二点:这一点因为使用RunJettyRun插件时没有这个日志,所以被高度怀疑,差异了一些资料,但是依然没有解决

http://stackoverflow.com/questions/22938689/info-no-spring-webapplicationinitializer-types-detected-on-classpath

http://stackoverflow.com/questions/16321819/no-spring-webapplicationinitializer-types-detected-on-classpath

http://steveliles.github.io/setting_up_embedded_jetty_8_and_spring_mvc_with_maven_and_no_xml.html

http://hitmit1314.iteye.com/blog/1315816

3、万不得已,新建一个单纯的aitispider-test项目,使用Bootstrap运行,并逐渐增加antispider-server的配置文件,终于在一步增加log4j.xml时,问题重现,找出原因:

4、"org"中,“ERROR”以下级别的日志被过滤了,用RunJettyRun插件,启动成功,是oejs包打印的,所以能显示;而用嵌入式Jetty,启动成功是org包打的,所以被过滤掉了,截图如下:

5、故事到此就结束了,但这个经历,加深了对嵌入式Jetty的理解:服从一套规范,实现一组标准,帮我们实现高效的Web通讯。如果写过ServerSocket通讯程序,会对嵌入式Jetty更深入的了解。

另外一个没有微观佐证的问题,关于Maven解决冲突的方式:

对于,这个问题,我使用准确告诉maven使用版本的方式解决(这是最标准、明确的方式,本身对于pom.xml就应该进行准确的定义,不应该依赖Maven自定义的方式帮我们解决冲突):

文章导航