Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-RS@Path嵌入变量_Java_Eclipse_Glassfish_Jax Rs - Fatal编程技术网

Java JAX-RS@Path嵌入变量

Java JAX-RS@Path嵌入变量,java,eclipse,glassfish,jax-rs,Java,Eclipse,Glassfish,Jax Rs,我正在使用最新的Jax-RS+Glassfish版本,并且一直在尝试对API进行版本化。出于某种原因,如果我在@Path Root资源类中包含嵌入变量,它甚至不会考虑这些变量 @Path("/v{versionNum}/tasks") public class Tasks { @SuppressWarnings("unused") @Context private UriInfo context; } 我的上下文根是/api My web.xml包括: <ser

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

@Path("/v{versionNum}/tasks")
public class Tasks {
    @SuppressWarnings("unused")
    @Context
    private UriInfo context;
}
我的上下文根是/api

My 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>

生成JAX-RS工具-不修改
JAX-RSservlet
com.sun.jersey.spi.container.servlet.ServletContainer
1.
JAX-RSservlet
/*
现在如果我想打 localhost:8080/api/v1/tasks,我得到一个404。 如果我击中 localhost:8080/api/tasks,它可以工作


我只是不明白我做错了什么。任何帮助都将不胜感激,谢谢

sunweb.xml

<sun-web-app>
  <context-root>/api</context-root>
</sun-web-app>  
...  
<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>  
...  
@Path("/v{version}/tasks")  
在GlassFish上部署
http://localhost:8080/api/v1/tasks
-运行良好


<servlet-mapping>
  <servlet-name>JAX-RS Servlet</servlet-name>
  <url-pattern>/api/*</url-pattern>
</servlet-mapping>
JAX-RSservlet /原料药/*
localhost:8080/projectname/api/v15/tasks

  • 项目名称:项目名称
  • /api:servlet映射
  • /v15/任务:路径注释

我在eclipse的项目属性中设置了它,在Web项目设置中您是否尝试使用{versionNum}?类似于@Path(“/vavava/tasks”)的东西嗯,是的,我尝试了@Path(“/v1/tasks”),但它仍然不起作用,但是如果我将web.xml servlet映射更改为/v1/*它会起作用,但我不希望这样,如果我尝试/v*/*它也不起作用,@Path(“/v{versionNum}”)会起作用吗?模式/v[0-9]/*?上下文根如何?上下文根隐藏项目名称我从头开始创建了一个新的动态Web项目,并正确地包含了所有Jersey JAR,使用Glassfish将我的上下文根放到/api,然后我复制了你的.xml内容,它成功了!谢谢各位。