继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Eclipse调用Tomcat服务的原理

慕i男神
关注TA
已关注
手记 3
粉丝 19
获赞 611

简化总结一下吧,也是看的百度的一些零散的:
一、背景:
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。

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

打开App,阅读手记
20人推荐
发表评论
随时随地看视频慕课网APP

热门评论

文章很有用

目测楼主很帅

尽管现在看不懂,但幸苦了

查看全部评论