2016-08-14 5 views
0

eclipseでJerseyを使用してRESTアプリケーションを構成しました。web.xmlにパスが設定されていると、REST APIは404を返しません。

web.xmlのパスが/*に設定されているときにREST要求を送信できませんが、/rest/*に変更すると、404 NOT FOUNDエラーが表示されます。 サーバーに例外はありません。示すように

web.xmlファイルは次のとおりです。ここで

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.app.user</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

は、ときに私、私は404エラーを取得しています私は

@Path("/rest/products") 
    public class Product { 

javaファイルにパスを宣言した方法ですサーバーURL上のパス/ rest/productsにアクセスします。

私には何が欠けていますか?

お願いします。

答えて

1

あなたのJersey Webアプリケーションを/rest/*にマップしたとき、すべての要求はパスに/restとなっています。 Productクラスを/rest/productsにマッピングしたため、URL全体がhttp://localhost:port/contextRoot/rest/rest/productsである必要があります。あなたがURLに2回休憩をしたくない場合は、Productクラスを/productsにマップするだけです。

0

"/ rest/*" urlにリンクされています。つまり、......./rest/*というURLを持つリクエストがある場合は、サーブレットServletContainerが呼び出されて処理されます。

あなたのJavaファイル@Path( "/ rest/products")が記載されています。

@Pathに記載されているパスにスラッシュがあるため、この404エラーが発生します。これは、スラッシュで始まるパスを指定すると、相対パスではなく絶対パスとして取得されるためです。

ので、あなたの最終的なURLが/MyProjectと/休憩/製品ように終わるませんが、代わりにそれを見つけることができない/休憩/製品のようになります。

したがって、エラーです。

関連する問題