1

TomcatライブラリとJerseyライブラリの下に、次のクラスで説明する REST Web サービスを作成しました。

package Servicios;

import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;

@Path("service")
public class ServiceResource {

    @Context
    private UriInfo context;

    /**
     * Creates a new instance of ServiceResource
     */
    public ServiceResource() {
    }

    @GET
    @Produces("text/html")
    public String getHtml() {

        return "<h1>Here we are, at the contemplation of the most simple web service</h1>";
    }

    @PUT
    @Consumes("text/html")
    public void putHtml(String content) {
    }
}

にアクセスする前に設定したhttp://localhost:8080/GetSomeRestので、デフォルトの作成済み.jspファイルが作成されます。

プロジェクトのプロパティで (NetBeans を使用して) として相対 URL を設定したのでwebresources/service一部serviceは で定義されているものと同じ@Path("service")です。すべて正常に動作しhttp://localhost:8080/GetSomeRest/webresources/service、Web サービスが消費されます。

しかし、そのサービスをから直接利用したい場合はどうすればよいhttp://localhost:8080/GetSomeRest/serviceでしょうか? serviceそのような相対URLだけに設定しようとしましたが、Error 404メッセージが表示されましたhttp://localhost:8080/GetSomeRest/service

仮想パスはどのように機能しますか?

Web サービスにエイリアスを追加するとはどういう意味ですか?

4

2 に答える 2

3

あなたが提供するコードにはパスセグメントwebresourcesが設定されていないので、あなたのコードがどのように見えるかを推測します。

JAX-RS アプリケーションは、クラスを拡張して構成できますjavax.ws.rs.core.Application。このようなクラスには、注釈を付けることができます@javax.ws.rs.ApplicationPath()。私の推測では、あなたのプロジェクトでは、この注釈はに設定されています

@javax.ws.rs.ApplicationPath("webresources")

したがって、JAX-RSリソース クラスの URL はこれらのパーツから構築されます。

  1. http://localhost:8080/- ホストとポート
  2. GetSomeRest- コンテキスト、通常はデプロイされた.warファイルの名前
  3. webresources-@ApplicationPath注釈の値
  4. service-@Pathクラスの注釈の値

ステップ 3 をスキップしないことをお勧めします。

注釈の値は、の要素@ApplicationPathによってオーバーライドできます。servlet-mappingweb.xml

于 2013-10-27T18:16:12.330 に答える