0

最新の Jax-RS + Glassfish バージョンを使用しており、API のバージョンを上げようとしています。なんらかの理由で、@Path ルート リソース クラスに埋め込み変数を含めると、変数が考慮されません。

@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/プロジェクト名/api/v15/タスク

  • プロジェクト名: プロジェクト名
  • /api : サーブレット マッピング
  • /v15/tasks : パス注釈
于 2012-09-05T20:07:01.937 に答える