为了账号安全,请及时绑定邮箱和手机立即绑定

Eclipse调用Tomcat服务的原理

标签:
Java

简化总结一下吧,也是看的百度的一些零散的:
一、背景:
1、首先,在Eclipse中新建一个hello工程,Workspace的位置在c:\eclipse\workspace,所以hello工程的位置就是在%Workspace%\hello\这个文件夹中。
2、然后Run as中选择“Run on server”,这时在浏览器(Eclipse当中的Web Browser)中就有了我们想看到的东西,其中url=http://localhost/hello/(隐含index.jsp)!
二、简单原理说明:
1、在MyEclipse的做法(MyEclipse有,Eclipse没有的方法)是:将你的工程拷贝一份到Tomcat目录中的webapps\目录当中,这样Tomcat就多了一个站点,自然可以访问。
2、在Eclipse中的做法不太一样,Eclipse调用了JDK中的JAVAw.exe,并且指定了许多参数,如:

 %JAVA_HOME%\bin\javaw.exe 
-Dcatalina.base=C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 "-Dcatalina.home=c:\Tomcat 6.0"  -Dwtp.deploy=C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps "-Djava............." 

此时,打开文件夹:
C:\eclipse\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp1 你可以看到的是类似Tomcat目录下的结构,在wtpwebapps中就有你所有的工程拷贝(即Workspace目录下的project)。如果你访问http://localhost可能提示你404找不到页面,但是在你的Tomcat下的ROOT里确实有文件,并且现在你用Tomcat的webApps下的站点都无法使用,原因就在于Eclipse更改了(使用参数,临时更改,关闭Eclipse中的Tomcat服务,Tomcat恢复原样)Tomcat的webapp主目录(就是-Dcatalina.base=...)。
3、eclipse映射的这个文件夹tmp1结构,与tomcat的根目录结构基本一致。
我们看找到下面这个标签

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

在下面就有了两个Context的虚拟目录项,一共两个:
第一个指定了ROOT(这里面什么文件也没,所以无法访问http://localhost/),和工程没关系,第二个和第二个是我的Hello工程,看看,都有了docBase和相对url的path了吧。所以在浏览器中才能访问到hello的jsp页面。
第一个:Context

<Context docBase="C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\ROOT" path="" reloadable="false"/>  

第二个:Context

<Context docBase="C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\hello" path="/hello" reloadable="false" source="org.eclipse.jst.jee.server:hello"/>  

写在最后:
路径太深,也不方便,手动修改一下eclipse中工程的发布路径就好,注意修改路径名webapps!
如下图(先清空tomcat中的所有工程,再双击tomcat,即可修改)
图片描述

最后再啰嗦几句吧:

<Context docBase="C:\eclipse\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\hello" path="/hello" reloadable="false" source="org.eclipse.jst.jee.server:hello"/>  

这个 source="org.eclipse.jst.jee.server:hello",它实际上并不是直接给 Tomcat 用的,而是eclipse调用插件在 "Publish" 时处理过一次后才交给 Tomcat。

以上就是对这部分小地方的大体了解。(多多交流和补充,靠各位了!新年快乐)

点击查看更多内容
20人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
19
获赞与收藏
611

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消