0

我有一个在 tomcat 服务器上运行的基于 Jersey 的 Rest 服务。没有 UI,只是提供一些休息服务的服务器。现在,要访问此服务,我必须输入的 URL 很长。类似于localhost:8080/MyApp/url_pattern/classPath/methodMyApp 是我部署的 webapp,url_pattern 是我在 web.xml 中的 servlet-mapping 中定义的模式,classPath 和 method 分别是 Class 和方法的 @Path 注释。是否可以缩短它以便我摆脱这个 URL 的 MyApp 和 url_pattern 部分。类似的东西localhost:8080/classPath/method

PS:这台服务器上只有一个 webApp 运行,所以没有MyApp意义

4

1 回答 1

1

我认为您无法从 url 中删除所有您想要的内容,但您绝对可以MyApp通过将其设置为 tomcat 的根应用程序来删除该部分。

此相关链接上的答案很好地描述了如何将您的应用程序设置为根应用程序。因此,您无需在 url 中使用应用程序名称即可访问您的 REST 服务:

在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 中明确定义所有应用程序上下文,同时指定路径和 docBase。您必须这样做,因为您已禁用所有 Tomcat 自动部署机制,并且 Tomcat 将不再部署您的应用程序,除非它在 ​​server.xml 中找到它们的 Context。

笔记:

最后一种方法还意味着,为了对任何应用程序进行任何更改,您必须停止并重新启动 Tomcat。

第三种方法

将您的战争文件放在 CATALINA_BASE/webapps 之外(它必须在外面以防止双重部署)。- 在 CATALINA_BASE/conf// 中放置一个名为 ROOT.xml 的上下文文件。此上下文文件中的单个元素必须具有指向您的战争文件位置的 docBase 属性。不应设置路径元素 - 它源自 .xml 文件的名称,在本例中为 ROOT.xml。有关详细信息,请参阅上面的上下文容器。

于 2013-08-22T05:28:07.177 回答