0

我正在使用最新的 Jax-RS + Glassfish 版本,并且一直在尝试对我的 API 进行版本控制。出于某种原因,如果我在 @Path Root 资源类中包含嵌入式变量,它甚至不会考虑这些变量。

@Path("/v{versionNum}/tasks")
public class Tasks {
    @SuppressWarnings("unused")
    @Context
    private UriInfo context;
}

我的上下文根是 /api

我的 web.xml 包括:

 <servlet>
    <description>JAX-RS Tools Generated - Do not modify</description>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

现在,如果我尝试点击 localhost:8080/api/v1/tasks,我会得到 404。如果我点击 localhost:8080/api/tasks,它可以工作!

我只是不明白我在这里做错了什么。任何帮助将不胜感激谢谢!

4

2 回答 2

1

sun-web.xml

<sun-web-app>
  <context-root>/api</context-root>
</sun-web-app>  

web.xml

...  
<servlet>
    <servlet-name>ServletAdaptor</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>ServletAdaptor</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>  
...  

HelloWorldService.java

@Path("/v{version}/tasks")  

在 GlassFish 上部署
http://localhost:8080/api/v1/tasks- 效果很好

于 2012-09-05T20:00:49.507 回答
0
<servlet-mapping>
  <servlet-name>JAX-RS Servlet</servlet-name>
  <url-pattern>/api/*</url-pattern>
</servlet-mapping>

本地主机:8080/projectname/api/v15/tasks

  • 项目名称:项目名称
  • /api : servlet 映射
  • /v15/tasks : 路径注释
于 2012-09-05T20:07:01.937 回答