我在tomcat服务器上运行了一个基于Jersey的Rest服务。没有UI,只有提供一些休息服务的服务器。现在,要访问此服务,我必须输入的URL很长。类似localhost:8080/MyApp/url_pattern/classPath/method
的地方,其中MyApp是我部署的webapp,url_pattern是我在web.xml中的servlet-mapping中定义的模式,classPath和方法分别是Class和方法的@Path注释。是否有可能缩短它,以便我摆脱此URL的MyApp和url_pattern部分。像localhost:8080/classPath/method
这样的东西。
PS:此服务器上只运行一个webApp,因此没有MyApp
部分
答案 0 :(得分:1)
我认为您不能从网址中删除所有您想要的内容,但您可以通过将其作为tomcat的根应用程序来删除MyApp
部分。
在此相关链接上的答案很好地描述了如何将您的应用程序设置为根应用程序。因此,您可以访问您的REST服务,而无需在url中使用应用程序名称:
Setting default application in tomcat 7
从上述链接复制的内容:
第一种方法:
首先关闭你的tomcat [从bin目录(sh shutdown.sh)] 那么你必须删除tomcat webapps文件夹的所有内容(rm -fr *)然后将你的WAR文件重命名为ROOT.war,最后启动你的tomcat [来自bin目录(sh startup.sh)]
第二种方法:
将您的war文件保留在原始名称下的CATALINA_BASE / webapps中 - 在server.xml文件的Host元素中关闭autoDeploy和deployOnStartup。明确定义所有应用程序上下文 server.xml,指定path和docBase。你必须这样做, 因为您已禁用所有Tomcat自动部署机制,并且 Tomcat将不再部署您的应用程序,除非找到它们 server.xml中的上下文。
注意:
这最后一个方法也意味着要进行任何更改 任何应用程序,您都必须停止并重新启动Tomcat。
第三种方法:
将您的war文件放在CATALINA_BASE / webapps之外(必须是 在外面防止双重部署)。 - 放置一个名为的上下文文件 CATALINA_BASE / conf //中的ROOT.xml。这个上下文中的单个元素 file必须有一个docBase属性指向你的位置 战争档案。不应该设置路径元素 - 它是从。派生的 .xml文件的名称,在本例中为ROOT.xml。请参阅上下文 容器上面有详细信息。