当eclipse调用tomcat的时候发生了什么?

  下午在看《tomcat权威指南》的时候想到了这么一个问题:当我在eclipse里调用本机上的一个tomcat运行一个web项目的时候,都发生了什么?

  之前做本科毕设的时候用的是MyEclipse,当时配置好tomcat服务器,运行一个web项目之后,可以在tomcat的webapps文件夹下看到我部署的项目,比如我的项目叫helloworld,那么我在webapps目录下就会看到一个文件夹,名字为helloworld,这个文件夹就是我的web站点。当tomcat运行起来的时候,我就可以在tomcat的页面上访问并管理我的项目了。比如我的tomcat的url是http://localhost:8080,那么我的项目就可以通过http://localhost:8080/helloworld来访问了。这是因为MyEclipse会将我的工程复制一份到tomcat的webapps目录下。

  而当我使用eclipse的时候,情况就发生了变化。

  首先,我在tomcat的webapps目录下看不到我部署的项目,在wtpwebapps目录下也没有。其次,我在eclipse里对tomcat的配置里的configurations里找到了这么一些个参数“-Dcatalina.base="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2" -Dcatalina.home="D:\Servers\tomcat7" -Dwtp.deploy="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps" -Djava.endorsed.dirs="D:\Servers\tomcat7\endorsed"”,同时根据参数中“E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2”这个路径找到了一个和tomcat很像的文件夹,并且在wtpwebapps目录下找到了我的项目。这些是怎么回事儿呢?

  在上网查阅了一些资料后我才知道原来是这样的:

  eclipse在启动tomcat的时候,调用了jdk中的javaw.exe这个程序,并且将我上面看到的那些参数添加了进去。下面看看这些参数的主要部分:

  • Dcatalina.base:它指定了catalina.base的位置。tomcat允许运行多个实例,catalina.base就是各个实例的工作目录,也就是我们在eclipse启动的这个tomcat实例的工作目录。它的目录结构和tomcat安装目录下的结构非常相似,只不过没有bin和lib目录。
  • Dcatalina.home:这个参数就是tomcat的安装目录,也就是各个tomcat实例公共拥有的目录。
  • Dwtp.deploy:这个就是你把项目部署到哪里的路径。比如我的helloworld项目就在这个参数指明的文件夹下。

  此时如果你访问http://localhost:8080会提示404,找不到页面,但是http://localhost:8080/helloworld可以访问到我的项目。那来看conf文件夹下的server.xml文件,找到host标签,可以找到以下代码:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\ROOT" path="" reloadable="false"/>
<Context docBase="E:\Workspaces\EclipseJ2EE\.metadata\.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\HelloWorld" path="/HelloWorld" reloadable="true" source="org.eclipse.jst.jee.server:HelloWorld"/>
</Host>

  其中第一个context指明了ROOT,但是这个路径下没有文件,所以访问http://localhost:8080是没有页面的。而下面那个context就是我的helloworld项目,指明了路径并且路径下有项目文件,所以才可以访问到。

  当然,这些配置只是作为eclipse启动的这个tomcat实例的配置,如果我们不使用eclipse,直接在tomcat的安装目录启动tomcat,那么我们是可以访问到http://localhost:8080的主页面,并且在网页上对tomcat进行监管的。

  最后附上一张图,解释一下在eclipse里对tomcat进行配置的地方。想要修改上面说的那些参数,只要点击中间的Open launch configuration,在弹出的对话框中找到Arguments标签,就可以在里面修改了。当然你也可以在Server Locations里面进行更改,只不过需要先在server视图的tomcat服务器上右键Clean...一下才可以编辑。



附:

  关于javaw,它是一个win32的GUI应用程序,它帮助应用去启动自己的GUI界面而不会启动控制台console界面。比如启动eclipse就会用到这个javaw程序,而启动一个输出“hello”文本的程序就只用java.exe就好了。

  

时间: 2024-07-30 10:11:27

当eclipse调用tomcat的时候发生了什么?的相关文章

关于eclipse部署tomcat关系探究

1.情景说明 在eclipse中,为什么Java文件修改后,重启tomcat class文件才能生效? 为什么jsp修改后,不需重启tomcat就能立即生效? 为什么静态资源(*.js,*.css,*.html,图片.pdf)等文件修改后,会即时生效? 2.探究eclipse的自动构建功能(Build Automatically) 自动构建的对象:src目录下的所有文件: src目录被指定用来存放Java源文件(*.java)及配置文件(*.xml,*.properties等),也可以存放其它格

Eclipse调用hadoop2运行MR程序(转)

hadoop:hadoop2.2 ,windows myeclipse环境: Eclipse调用hadoop运行MR程序其实就是普通的java程序可以提交MR任务到集群执行而已.在Hadoop1中,只需指定jt(jobtracker)和fs(namenode)即可,一般如下: [java] view plaincopy Configuration conf = new Configuration(); conf.set("mapred.job.tracker", "192.1

eclipse 对tomcat访问的映射

1. 上下文 主要介绍eclipse 创建tomcat 对 访问路径的处理 关键xml: 标签: Context   (上下文)  属性: doBase (绝对路径) path (访问路径) 2.-Dcatalina.base="E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0" :指向每个tomcat目录私有的信息,就是 conf ,logs,webapps,work ,temp 的路径 -Dcatali

tomcat单独启动成功, eclipse启动tomcat报错, 错误一:找不到或无法加载主类 org.apache.catalina.startup.Bootstrap;错误二:端口被占用

针对刚遇到的tomcat单独启动成功,但是在eclipse启动tomcat就报错问题作出总结如下: 软件版本: 1. eclipse版本 ① Luna Service Release 2(4.4.2)    64位 ② Helios Service Release 2   64位 2. tomcat版本 ①apache-tomcat-6.0.14 ②apache-tomcat-6.0.35 3. JDK版本 jdk1.6.0_45 64位 错误详情: 1.  tomcat启动失败,错误提示: j

eclipse部署tomcat修改项目访问路径(虚拟路径)

原文参考: http://www.educity.cn/wenda/147993.html http://blog.163.com/java_zf/blog/static/19926038420129240314546/ tomcat部署web项目(eclipse自动部署项目到tomcat,访问URL中不包含部署名) 最近项目中需要把项目部署到tomcat中,并且访问路径中不包含不署名,且想实现Eclipse中的自动部署,扒了好久资料,最终实现了自己的需求,呵呵,如下: 1. 把项目contex

eclipse启动tomcat弹出错误提示:Tomcat setting should be set in tomcat preference page

eclipse启动tomcat可能会弹出以下错误: 主要原因是tomcat没有配置好,解决方案如下: 第一步:Windows->Preference->Server->Runtime Environment然后选择自己安装的Tomcat版本,然后Next,选择Tomcat安装路径,Finish 第二步:Windows->Preference->Tomcat,选择版本及安装路径,然后Apply,最后保存退出即可 检测:启动tomcat 图解如下:

Tomcat学习(一)——使用Eclipse绑定Tomcat并发布应用

1.下载Tomcat 官网地址:http://tomcat.apache.org/whichversion.html 2.目录结构 bin:脚本目录 启动脚本:startup.bat 停止脚本:shutdown.bat conf:配置文件目录 (config /configuration) 核心配置文件:server.xml 用户权限配置文件:tomcat-users.xml 所有web项目默认配置文件:web.xml lib:依赖库,tomcat和web项目中需要使用的jar包 logs:日志

eclipse启动tomcat无法访问

eclipse启动tomcat无法访问 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问. 关闭eclipse里面的tomcat,在tomcat安装目录下双击startup.bat手动启动tomcat服务器.访问htt://localhost:8080/能正常访问tomcat管理页面. 症状原因: eclipse将tomcat的项目发布目录(tomcat 目录中的webapp)重定

解决eclipse配置Tomcat时找不到server选项(Mac通用)

集成Eclipse和Tomcat时找不到server选项: 按照网上的步骤如下: 在Eclipse中,窗口(window)——首选项(preferences)——服务器(Server)——运行时环境(Runtime Environments) ——添加(Add),添加Tomcat服务器.对应安装的Tomcat版本选择Apache Tomcat v6.0.下一步通过“浏览(Brower)”按钮选择之前Tomcat的安装目录,指定后点击“完成”完成配置. 问题在于我的Eclipse为新版本eclip