Eclipse中的Tomcat启动后,会立即自动访问一次主页,是什么原因?

oulaly 发布于 2016/12/14 14:31
阅读 1K+
收藏 1

我并没有在代码里让它这么做,Tomcat in Eclipse在启动完成后(INFO: Server startup in 9943 ms)就立即自动发起了一次项目根路径的访问,非常莫名其妙。

打印request的user-agent头,得到的值是Java/1.7.0_21。

同时我直接用Tomcat7.exe启动(而不通过Tomcat in Eclipse),就不会有这种情况。

以下是问题补充:

@oulaly:出现这种情况还有个前提,就是server.xml中的Context path="/"或path=""。如果给path指定一个具体路径名,也不会自动请求。 (2016/12/14 16:11)
加载中
0
逝水fox
逝水fox

以前研究过这个部分,这东西是Eclipse Tomcat 插件用来检测Tomcat是否启动好的机制。Eclipse在启动Tomcat实例后,会创建一个PingThread线程,每200毫秒发起一个http连接检测一次,直到Tomcat正常返回(包括200,404等)结束,视为Tomcat启动成功。(因为Eclipse不能单纯从Tomcat的进程状态来区别他的Starting和Started状态)。

具体的代码实现可以反编译看Eclipse plugins目录下org.eclipse.jst.server.tomcat.core{version}.jar下的TomcatServerBehaviour和PingThread。

结论上,这个过程绕不过去(没有任何的分支跳过条件),楼主不用纠结了。

以上是单论Eclipse for JavaEE,MyEclipse的话没研究过不好说。

蓝风970655147
蓝风970655147
大佬 你好
oulaly
oulaly
回复 @逝水fox : 嗯,所以在某种程度上来说,它其实和项目代码还是有些关系
逝水fox
逝水fox
回复 @oulaly : 另外的,他也不会管Tomcat对这个请求返回什么,只要有服务器响应包,哪怕是出错或者404也算启动好了。所以,如果这个请求,你的项目有反应的话,应该是过滤器或者Servlet的url匹配了这个请求。
逝水fox
逝水fox
回复 @oulaly : 和项目代码没关系,Eclipse是往你启动的Tomcat的根目录(http://ip:port/)发一个请求,目的是检查Tomcat有没有启动完,无论你项目是配的什么路径他都是这个请求地址。
oulaly
oulaly
感谢!但是我启动其他项目的时候又没有遇到这个问题,仅在某一个项目中才有这种情况,这些项目都是用的同一套整体框架,只在业务上存在差异。
0
k
kyytyp
eclipse自带的 可以配制去掉 方便开发
oulaly
oulaly
回复 @kyytyp : “节省开发人员再去打开浏览器去访问”,但是我遇到的情况,并没有自动调用浏览器打开访问。只是启动后便有了我在Spring的HandlerInterceptorAdapter继承类preHandle方法中打印的请求日志
k
kyytyp
回复 @oulaly : 原因就是eclipse做的 这个没必要去操作 这个是节省开发人员再去打开浏览器去访问的 你可以配制为你的外部默认浏览器
oulaly
oulaly
去掉什么?去掉tomcat? 我是想找出引起这个问题的原因。
0
Leedy
Leedy

将Launch选项设置下就可以

PS:以下是idea下的配置,去掉launch选项就可以了,设置应该大同小异

oulaly
oulaly
回复 @Leedy : 你说的应该是MyEclipse里才有的选项,不过还是非常感谢
Leedy
Leedy
回复 @oulaly : 我都好多年没用过Eclipse了,记不太清了,按照这个看看吧
Leedy
Leedy
回复 @oulaly : window->preferences->Myeclipse->Servers->Tomcat 然后找到你的相应的Tomcat服务器的版本,选中然后展开其下面的子菜单会发现有个Launch选项,选中,在右侧Tomcat launch mode 中,选择Run mode 然后Apply
oulaly
oulaly
我用的Eclipse,不是MyEclipse,也不是Idea,没有找到类似的选项
0
oulaly
oulaly
有谁遇到过类似的问题吗?
返回顶部
顶部