6

web.xmlを使用せずに基本的なジャージRESTfulサービスをTomcat7にデプロイしようとしています。

 @WebServlet(loadOnStartup=1)
 @ApplicationPath("resources")
 @Path("/mypath/{name}")
 public class MyResource extends Application {

 @Override
 public Set<Class<?>> getClasses() {
     Set<Class<?>> s = new HashSet<Class<?>>();
     s.add(MyResource.class);
     return s;
 }

 @GET
 @Consumes("text/plain")
 @Produces("text/plain")
 public String getWelcome(@PathParam(value = "name") String name) {
     return "Welcome to jax-rs " + name;
 }
}

/ myapplication / resources / mypath / sampleにアクセスしようとすると、404が表示されます。

アノテーションを使用してサーブレットをデプロイできるため、@WebServletこれはweb.xmlなしのサーブレットをTomcat7にロードすることとは関係ありません。

ジャージーのドキュメントを読んでから、ランタイムは拡張Applicationして実行するクラスをスキャンしgetClasses()、すべてのルートリソースをロードする必要があります。

4

1 に答える 1

9

どのバージョンのジャージーを使用していますか?アプリケーションとリソースを2つのクラスに分割してみてください。@WebServletアノテーションを確実に削除します。つまり、1つのクラスがApplicationを拡張し@ApplicationPath、別のクラスが。で注釈を付けられてい@Pathます。

編集:それjersey-servlet.jarがWARファイルに含まれていることを確認してください。

于 2012-10-07T20:07:18.937 に答える