浅谈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页面。

最新文章

  1. 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
  2. mciSendString 的两个小坑
  3. XCode6 开发本地化应用
  4. Sublime Text 3前端开发常用优秀插件介绍
  5. 【uoj150】 NOIP2015—运输计划
  6. NIOS II CPU复位异常的原因及解决方案
  7. CocoStudio UI 编辑器的使用
  8. Windows消息机制要点
  9. 苹果在Xcode6中弃用segue的push和model
  10. ZJ2008树的统计(树链剖分)
  11. C# 中的 lock的陷阱
  12. android 引用 project以及下拉刷新开源类库Android-PullToRefresh 的使用
  13. 指针-->字符串
  14. redmine使用汇总redmine软件工程过程
  15. JS表单对象和图片对象--JavaScript基础
  16. java中的取整(/)和求余(%)
  17. 什么是CAS机制?(转)
  18. IDEA常用操作
  19. [转]再识Cortex-M3之堆栈
  20. 转 jQuery中的$.extend方法来扩展JSON对象

热门文章

  1. rsync | scp文件同步命令使用
  2. Spring boot 外部资源配置
  3. ELK 6.x 部署
  4. jQuery实际案例④——360导航图片效果
  5. [PostgreSql]PostgreSql创建函数及函数的执行
  6. linux禁止ping
  7. 51nod-1574-排列转换
  8. Java 连接操作 Redis 出现错误
  9. 【Error】 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  10. ASP.NET MVC添加Action就找不到