2

我刚刚开始构建自己的 rest web 服务,并从阅读这个优秀的教程开始:http ://www.vogella.com/articles/REST/article.html#first_project

但是,有些东西我不太明白。它与服务的路径有关。

hello 资源的路径现在是这样的:

http://localhost:8080/de.vogella.jersey.first/rest/hello

这是教程中的默认设置。

但是我想将其更改为更方便的链接,例如:

http://localhost:8080/mywebservice/resources/hello

我将 web.xml 更改为以下内容以尝试实现它:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>mywebservice</display-name>
  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>de.vogella.jersey.first</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/resources/*</url-pattern>
  </servlet-mapping>
</web-app> 

我更改了显示名称和 url 模式,但没有效果。我无法使用我想要的路径访问资源,尽管我可以从旧路径中检索它。

这是为什么?web.xml 中的显示名称与此无关吗?

4

3 回答 3

1

您正在更改 Webapp 的上下文名称。如果您以战争(webapp 存档)的形式部署它,那么战争的名称将是上下文名称。

在您所遵循的示例中,您正在使用该名称创建一个动态 Web 项目。您必须适当地重命名它。

于 2012-07-11T01:02:05.867 回答
1

这里同样的问题。

我试图更改“显示名称”,但它根本不影响服务 URL。但是,“url-pattern”的更改确实更改了 URL。

因此,从 Vogella 的“第一个 REST 示例”中,我会说,URL最初构建如下:

http:// your_domain:port/**project-name**/url-pattern/path_from_rest_class 

问候贾娜


补充:解决方案

同时,我找到了一种更改 URL 的这一部分(“显示名称”)的方法:

  • 您转到 EAR 项目的 application.xml(文件夹 META-INF)
    --> 如果没有 xml,右键单击节点“部署描述符”并选择“生成部署描述符存根”,它会创建 application.xml) )

  • 要更改 URL 部分的“显示名称”,您必须更改“上下文根”中的值。
    (“web-uri”不得更改!)

现在 URL 模式如下:

http:// your_domain:port/**context-root**/url-pattern/path_from_rest_class 

因此,您可以按照自己喜欢的方式更改 URL。:-) 希望这可以帮助!

问候贾娜

于 2013-06-24T10:24:23.817 回答
-1

另一种方法是右键单击您的项目并转到 WebProject 设置,从中您可以更改 Context root 与您在 displayName 中想要的任何内容相同,然后在服务器上再次运行项目。

这对我有用,因为问题仅与 displayName 有关,因为当我们更改它以使用新 URI 访问时工作正常。

谢谢

于 2016-07-21T06:14:59.047 回答