浅谈Eclipse调用Tomcat服务的原理

转:http://www.thinksaas.cn/group/topic/341645/
转:http://www.173it.cn/Html/?5815.html

首先,在Eclipse中新建一个Hello工程,Workspace的位置在c:eclipseworkspace,所以hello工程的位置就是在%Workspace%hello这个文件夹中。
然后在hello工程中添加一个hello.jsp或者index.jsp都可以(index.jsp会方便一点),内容随便写点,如在body标签之间中就一个Hello Eclipse and Tomcat6.0!然后Run as中选择“Run on server”,这是就会调用已经配置好的Tomcat服务器(此时把你的Tomcat服务关闭,让Eclipse来调用就可以了,否则会有小小的冲突),这时在浏览器(Eclipse当中的Web Browser)中就有了我们想看到的东西,其中url=http://localhost/hello/(隐含index.jsp)!

Hello Eclipse and Tomcat6.0!

!重点来了,Eclipse这期间干了什么?Tomcat的虚拟目录中,你没有设置Hello,怎么能运行?
1.在MyEclipse的做法(MyEclipse有,Eclipse没有的方法)是:将你的工程拷贝一份到Tomcat目录中的webapps目录当中(这个目录中,不需设置,tomcat就会把文件夹下当做一个站点,但是webapps这个目录下的html文件是不会解析的,根目录URL解析的是ROOT文件夹下的网页文件),这样Tomcat就多了一个站点,自然可以访问。
2.在Eclipse中的做法不太一样,Eclipse调用了JDK中的JAVAw.exe,并且指定了许多参数,如:

%JAVA_HOME%binjavaw.exe -Dcatalina.base=C:eclipseworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1 "-Dcatalina.home=c:Tomcat 6.0" -Dwtp.deploy=C:eclipseworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1wtpwebapps "-Djava............."

如果你的windows任务管理器有印象路径(或者其他任务管理工具)你就会看到这行命令行,而此时,任务列表中没有Tomcat.exe这个服务进程,但是你却可以访问Tomcat服务器的hello工程的页面。
此时,打开文件夹:C:eclipseworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1
你可以看到的是类似Tomcat目录下的结构,在wtpwebapps中就有你所有的工程拷贝(即Workspace目录下的project)。如果你访问http://localhost可能提示你404找不到页面,但是在你的Tomcat下的ROOT里确实有文件,并且现在你用Tomcat的webApps下的站点都无法使用,原因就在于Eclipse更改了(使用参数,临时更改,关闭Eclipse中的Tomcat服务,Tomcat恢复原样)Tomcat的webapp主目录(我想就是-Dcatalina.base=...)
以下用%tmp1%代替C:eclipseworkspace.metadata.pluginsorg.eclipse.wst.server.coretmp1;
用记事本打开%tmp1%confweb.xml(和tomcat文件夹下的结构一样),这是配置虚拟目录的文件,我们可以找到host标签,没什么不同(这里appBase依旧是webapps,但是已经映射到了%tmp1%wtpwebapps了),其实这些文件应该是先从Tomcat的conf文件夹里拷贝到这里,然后根据Eclipse的工程进行了修改,我们看。

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

浅谈Eclipse调用Tomcat服务的原理的更多相关文章

  1. 浅谈RPC调用

    RPC英文全称remote procedure call 翻译成中文的意思就是远程过程调用.RPC的出现其实主要是为了解决分布式系统间的通信透明性的问题. 那什么是分布式系统的通信透明性问题?这个问题 ...

  2. Eclipse调用Tomcat出错

    错误提示:The server cannot be started because one or more of the ports are invalid. Open the server edit ...

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

    下午在看<tomcat权威指南>的时候想到了这么一个问题:当我在eclipse里调用本机上的一个tomcat运行一个web项目的时候,都发生了什么? 之前做本科毕设的时候用的是MyEcli ...

  4. 浅谈WebLogic和Tomcat

    J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器.可以看出服务器在这种架构是非常重要的. 这几天接触到两种Java的web服务器,做项目用的Tom ...

  5. 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法

    用的是如下图所示的eclipse标准版演示: 先谈下eclipse下安装MyEclipse插件的过程: 第一种方法:通过MyEclipse的存档进行离线更新 1,到MyEclipse官网进入下载页面, ...

  6. 浅谈并发和tomcat线程数

    假设Tomcat每到固定一个时间会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是7.0.54,配置如下 & ...

  7. 浅谈history对象以及路由插件原理

    简介 History对象最初设计用来表示窗口的浏览历史,但是,出于隐私方面的原因,History对象不再允许脚本访问已经访问过的实际URL.虽然,我们不清楚历史URL,但是,我们可以通过History ...

  8. eclipse启动Tomcat服务输入http://localhost:8080/报404解决方法

    其实如果Tomcat能够正常启动,而就算输入http://localhost:8080时出现404错误,也不会影响Tomcat作为服务器运行.通过eclipse来启动tomcat会碰到“访问http: ...

  9. 浅谈SpringCloud (二) Eureka服务发现组件

    上面学习到了如何由一个程序访问另一个程序,那么如果使用SpringCloud来进行访问,该如何访问呐? 可以借助Eureka服务发现组件进行访问. 可以借助官方文档:https://spring.io ...

随机推荐

  1. jquery实现全选/全不选

    //设置全选全不选$("#checkAll").click(function () { if ($("#checkAll").attr("checke ...

  2. UIAutomation学习入门

    一.界面的自动化操作 .Ui自动化测试 .软件外挂 二.Win32基础知识 a.Win32中一切元素皆窗口,窗口之间有父子关系.整个桌面是一个“根窗口”. b.进程: 根据进程id拿到进程对象Proc ...

  3. Angular中form表单中input自动响应回车事件无效

    环境:angular.js 问题:当你在input框中输入搜索信息,然后回车键,信息消失而且也没有执行查询??? 原因:组合查询的代码不是<button ng-click="ch()& ...

  4. qt4.8中多线程的几种方式

    第一: 用QtConcurrentRun类,适合在另一个线程中运行一个函数.不用继承类,很方便 第二:用QRunnable和QThreadPool结合.继承QRunnable,重写run函数,然后用Q ...

  5. H3C WA2610i-GN FitAP telnet打开

    在ac上面:sys_hidecmd 隐藏模式wlan ap ap1 exec-control enable ##目前为disable状态wlan ap ap1 telnet enable ##目前为e ...

  6. [转载]各种java生成word解决方案的优缺点对比

    解决方案 优点 缺点 Jacob 功能强大 直接调用VBA接口,程序异常复杂:服务器必须是:windows系统+安装Office:服务器端自动化com接口容易产生死进程造成服务器宕机 Apache P ...

  7. vector概念

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  8. bootstrap 获得轮播中的索引 getActiveIndex

    今天想用bootstrap做一个轮播,当轮播滚到每张图的时候,在页面下面就显示相对应的内容,那么问题来了:我肯定需要知道当前活动(显示图片)的索引号,那么bootstrap的轮播组件要怎么获得这个索引 ...

  9. js 验证对象是否为数组

    一.方法一:用到了原型 由于typeof检测数组,只会显示其为object,并不会详细到告诉我们是否为array,所以我们可以自己写个js用原型来检测: <script> /** * * ...

  10. Python3的第一个程序(三)

    现在,了解了如何启动和退出Python的交互式环境,我们就可以正式开始编写Python代码了. 在写代码之前,请千万不要用“复制”-“粘贴”把代码从页面粘贴到你自己的电脑上.写程序也讲究一个感觉,你需 ...