`

Tomcat访问路径去掉发布项目的项目目录

阅读更多
需求:
把发布到Tomcat下的web项目,访问路径去掉项目名称

问题背景:
以前的.net些的WebService,现在改用java来写了。已经把wsdl搞的基本一致了,但是由于原webservice发布到iis网站的根目录了,所以访问的时候也就没有虚拟目录的名字。但是java写的WebService,放到Tomcat下的时候,默认会带上项目的名称。就多了这么一段:
如原来的wsdl为:http://localhost:8080/SearchReqService.asmx?wsdl
现在的wsdl为:http://localhost:8080/Interface/SearchReqService.asmx?wsdl
而且wsdl地址事先约定好了,不能改变,不然就牵扯到第三方改动、

实现方式及原理:

方式一:
原理:Tomcat的默认根目录是ROOT,实际上ROOT这个项目在实际生产环境是没有用的,所以我们可以用我们的项目覆盖ROOT项目
操作过程:
1.删除ROOT下所有文件及文件夹
2.把我们项目的war包解压后,项目目录下的所有文件和子目录都拷贝到ROOT目录下即可
或者有更狠的一招:直接删掉ROOT目录,然后把我们的项目打包名称改成ROOT.war,放到webapps下就行

方式二:
原理:Tomcat本身可以配置虚拟目录。方法就是在Server.xml中<Engine><Host>节点下加入Context信息。如我们可以配置<Context path="/abc" docBase="D:\app\abc" ... />,那我们可以通过地址http://localhost:8080/abc来访问我们放在D:\app\下面的abc项目。我们可以把这个path="/abc"修改为path=""。意思就是把abc映射到根目录,访问路径就会变成http://localhost:8080/。
操作过程:
按照配置虚拟目录的方式,在<Engine><Host>下添加一个Context节点,具体配置如下:
<Engine name="Catalina" defaultHost="localhost"...>
...
    <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
	<Context path="" docBase="Interface" reloadable="true" />
<!--注:我这里使用的是相对路径,Interface项目是放在Tomcat的webapps目录下的,当然也可以改为绝对路径-->
...
    </Host>
...
</Engine>

访问方式就可以用http://localhost:8080/SearchReqService.asmx?wsdl了
如果用虚拟目录的方式,地址http://localhost:8080/Interface/SearchReqService.asmx?wsdl也可以访问。
同样的方式,我们可以为path指定不同的路径,解决访问路径区别项目名称的需要。


其它,去掉访问的端口号8080.就是利用了HTTP请求访问的端口默认是80的方式实现的,iis也一样。我们只用把Tomcat的HTTP监听端口号改为80(修改<Connector port="8080" protocol="HTTP/1.1"这里的端口号为80)即可。
分享到:
评论

相关推荐

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    四个TOMCAT目录:自行解压到(D:\toots\)下。分别为 tomcatA,tomcatB,tomcatC,tomcatD 三、配置 1、Apache配置 1.1、httpd.conf配置 修改APACHE的配置文件D:\toots\Apache \conf\httpd.conf 将以下Module的注释...

    dubbo-admin-2.8.4,放入tomcat直接可用

    dubbo官网把这个war包去掉了,想用的话只能自己下载源码编译打包了。上传这份是我打包后的,配置zookeeper使用,理论上本地启用zookeeper后使用...war包丢进tomcat可以直接访问,访问路径问:ip+端口/dubbo-admin-2.8.4

    vue-cli history模式实现tomcat部署报404的解决方式

    去掉可使用history模式,开发模式路径访问都没问题,部署到服务器之后访问路径时报404,这种情况需要配置服务器默认访问路径index.html.官网只提供了apache、nginx的配置方式,没有tomcat的配置方式,下面以个例子来...

    fckedit编辑器

    然后将FCKeditor-2.3.zip(java)压缩包中\web\WEB-INF\lib\目录下的两个jar文件拷到项目的\WEB-INF\ lib\目录下把其中的src目录下的FCKeditor.tld文件copy到TestFCKedit/WEB-INF/下 4.合并web.xml: 将FCKeditor-...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    问题描述:之前项目只能部署到Root 下才能正常运行,目前已经修复,可以带项目路径进行访问了,之前只能这样访问,http://localhost:8080 而不能http://localhost:8080/shiro.demo/ 访问,目前是可以了。...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    Java面试宝典2020修订版V1.0.1.doc

    2、Tomcat根目录下有哪些文件 31 3、什么是TOMCAT,怎样启动停止,配置文件,日志文件的存储。 31 4、解释一下什么是servlet;什么是servlet容器; 32 5、说一说Servlet的生命周期,执行过程? 32 6、实例化servlet有几...

    jpivot学习总结.doc

    role 否 String 是 Role 的名称,如: role=”tomcat” 就允许当前用户角色为 tomcat 的访问该控件, role=”!tomcat” 则就允许除角色为 tomcat 以外的所有的用户访问。 query 是 OlapModel 是 一个 ...

    Spring MVC 入门实例

    把 jsp 文件放到 /WEB-INF/jsp/ 目录下是被鼓励的, 这样可以防止用户不经过 Controller 直接访问 jsp 文件从而出错(有些顽皮的人很喜欢这样做). 配置 SimpleUrlHandlerMapping, 在上面的配置文件中, /hello.do 的...

Global site tag (gtag.js) - Google Analytics