7

Jerseyを使用する単純な REST Web アプリケーションをセットアップしようとしています。ドキュメントでは、web.xml ファイルを使用せずにアプリケーションを作成できるはずです。サイトから:

JAX-RS は、ルート リソースとプロバイダー クラス、およびルート リソースとプロバイダー シングルトン インスタンスを宣言するための、デプロイメントに依存しない抽象クラス Application を提供します。Web サービスは、このクラスを拡張して、ルート リソース クラスとプロバイダ クラスを宣言できます。

次の例は、このコードを示しています。

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

私にとって、これは、Applicationクラスを使用してサーブレットのセットアップをすべて実行できることを示しています。これは、私のリソース クラスの注釈を読み取り、正しい URL 処理メカニズムを設定する構成のようです。あれは正しいですか?他の設定をする必要はありませんか?


私は以下を作成しましたが、うまくいきませんでした (私は から 404 を取得しますlocalhost:8080/{context}/test):

pom.xml:

<dependencies>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.12</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.12</version>
    </dependency>

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.12</version>
    </dependency>   

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>

アプリケーション クラス:

@ApplicationPath("/")
public class JerseyTestApp extends Application
{
    @Override
    public Set<Class<?>> getClasses()
    {
        final Set<Class<?>> classes = new HashSet<>();
        classes.add(JerseyTestController.class);
        return classes;
    }
}

リソース クラス:

@Path("/test")
public class JerseyTestController 
{
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getTestMsg() 
    {
        return "It works";
    }
}
4

1 に答える 1