自从用回了eclipse,从昨晚就在想这么一个事,你看啊,我们比如有个项目应用名字
叫app,部署到外网使用,要访问的话基本上是不带项目名的(也就是contextPath名,地
址如http://221.221.158.46/index.do),因为在外网的tomcat的server.xml,一般
配置了Context,并且path为空,使得项目文件目录和tomcat目录分别在两个地方(如根目
录/www下),但是在本地环境情况下,这个事情还有点绕,还拿app这个作例子。
我建了一个app的Dynamic Web Project,出于以前myeclipse的习惯,我把WebContent改成了WebRoot,然后用它提供的servers配置tomcat,双击Servers标签中新建好的tomcat项,进入配置界面,其中Server Locations选择了Use Tomcat installation(takes control of Tomcat installation),下面的deploy path可以填任意你想部署的地方,如f:\target,这样就与webapps分开了,完成后就可以右击tomcat项,选择add/remove将我们的app项目扔到那边去,之后点击publish完成本机部署。
观察f:\target目录,发现里面有app目录和ROOT目录,至于那个ROOT是个打酱油的先不用管它,既然IDE敢把app放到了另外的目录里,说明一定改了我们tomcat的server.xml文件,现在内容多了一条Context元素,内容为
<Context docBase="F:\target\app" path="/app" reloadable="true" source="org.eclipse.jst.jee.server:app"/>
我们现在可以通过http://localhost:8080/app来访问了,但这不是我想要的,我想用http://localhost:8080直接访问app,所以path应该为空,手动改它肯定是不行的,因为IDE已经直接连到了这个文件,每次发布它都会把path修改回去。
在myeclipse的时候,是可以通过项目设置,让它直接把
app目录里面的内容,直接部署到webapps/ROOT下面,这样就可以不带ContextPath来访问,但是这样本身就很奇怪,我们看不到三条腿的猫了,就算是静态页面,也是人家自身带的东西,怎么能让你随便给覆盖了呢,但是我还是试着在eclipse3.6里找了找相关的配置,还真有点收获。
右击app项目,选择Properties,下面有一项Web Project Settings,里面有一条Context root,好像有点像了,默认是app,我把它改成了ROOT,保存一切都没有问题,本以为会和myeclipse是一样的结果,但是部署完发现结构不对头了,无论如何IDE都会把
app这个目录也会复制到ROOT目录里,这和上面myeclipse行为不一致了,我还是没有办法脱离contextPath来访问,就算是deploy到webapps的ROOT,里面依然有个可恨的app目录。
这个困扰了我挺长的时间,网上好像也没有提到这个问题,直到我又看了server.xml,发现path属性的值改成了"/ROOT",原来context root的修改对应的是path属性,这样的话我只需要把context root设置成空,相应path属性不也为空了么,这样就搞定了,但是人家IDE是不让你这么干的,Context root cannot be empty提示着我要走一些歪路子了,只能用最后一招,看看能不能改改你生成的IDE配置文件。
最终找到项目所在目录.settings\org.eclipse.wst.common.component文件,发现里面有一条<property name="context-root" value="ROOT"/>,对应的就是上面的那条设置,直接value改成空,保存退出,依然部署到f:\target下面,重新publish项目,发现结构还是f:\target\app,但是惊喜的发现,server.xml中path属性已经是空了,而docBase是我们喜欢的F:\target\app,尽管有个不认识的source="org.eclipse.jst.jee.server:app"属性,但和我无关了,这下用http://localhost/index.jsp,就可以直接访问我们部署好的app应用页面了
我不知道这样做是不是最正确的,但是确实解决了问题,首先实现了部署目录和tomcat的webapps分离,然后消除了contextPath访问名字,IDE这个东西有时候能把人折腾死,有时真是觉得功夫在身外
分享到:
相关推荐
在eclipse中无插件,实现自动将项目部署在tomcat下的webapps文件夹下
Eclipse中将web项目自动发布到Tomcat_webapps下
对初学java人员关于Eclipse自动部署项目到Tomcat的webapps下的有效方法
在eclipse中部署项目web有时候访问jsp会抛出以下类似的异常信息,加入到webapps下的lib目录下
idea项目部署,如何将idea的项目部署在tomcat中的webapps中。
NULL 博文链接:https://bigdragon.iteye.com/blog/2369978
该文件是解决Eclipse中自动部署项目到Tomcat的webapps目录的问题, 本文是对百度空间 IT_狂人 的作品进行的改进, http://hi.baidu.com/it_crazyer/item/8c4e22a8e6bbf51da9cfb773
阿里巴巴的dubbo 解压后直接放到tomcat/webapps下即可,注意的是,这里修改了dubbo连接zookeeper的地址为127.0.0.1:2128 , root用户密码为root,guest用户密码为guest 访问地址为:...
防止在删除Tomcat下工程时误删 webapps下面自带的API、Index、Manager导致localhost:8080本地页面无法打开,上传了一下,免得再去重新安装
代码如下:<Context path=”” docBase=”/usr/tomcat/apache-tomcat-8.5.11/webapps/guanwang” debug=”0″ reloadable=”true”/> docBase即为默认访问的文件夹名称。Linux与Windows一样,只是文件夹地址有差别...
tomcat下webapps防止刷新报错的静态文件
解决方法:去到菜单Run->Debug Configurations ...->双击Jetty Webapps下你的项目->Dependencies->把WithoutScope去掉 提醒1>记得给你的jetty容器分配内存,这个独立不和eclipse共享的。解决方法:Run->Debug ...
<Context path="/ourdorm-p1" reloadable="false" crossContext="true"></Context> <Context path="/ourdorm-p2" reloadable="false" crossContext="true"></Context> <Context path="/newourdorm-1" ...
四,导入该项目到eclipse并部署到tomcat下 五,右击该项目进入properties中,点击Flex Build Path,把Output folder 中的C:\Tomcat 6.0改为你的tomcat位置Output folder URL中端口为你的tomcat服务端口 六,点击...
解决了red5 Install不了的问题。记得重启一下服务。
Tomcat8源码,依赖添加完毕,可以在eclipse中直接运行,分析tomcat运转流程。 如果报错,拷贝conf和webapps文件夹到output/build目录下即可。
webapps.zip
这个方法实际上和在IDE开发环境里部署项目是一样的。 用此方法的访问路径为http://localhost:8080/webname 2 /修改Server.xml文件 在conf下的server.xml文件里找到Host标签,在里面添加如下代码: <Context ...
使用Docker部署war,必须要用容器,我们就用tomcact容器,其实都是将war包丢到tomcat的webapps目录下,tomcat启动的情况下会自动解压war包。 一种是在Docker中安装tomcat容器的镜像,然后把war包丢到tomcat镜像下...
将axis项目放在某个盘的根目录下,(因在tomcat的安装目录在版本号前有个空格,配置axis环境变量时系统认不到对应的变量路径) 如:D:\axis;然后在TOMCAT的server.xml的添加项目加载的<Context>: <Context path="/...