10

Jersey REST サーバーのチュートリアル [1] は、Jersey サーブレットについて次のように述べています。

このサーブレットは、着信 HTTP 要求を分析し、この要求に応答するための正しいクラスとメソッドを選択します。この選択は、クラスとメソッドの注釈に基づいています。

サーブレットが「正しいクラスとメソッドを選択する」とき、毎回クラスを再インスタンス化しますか? それとも、すべてのリソース クラスの 1 つのインスタンスを保持しますか?

これらのリソース クラスがアプリケーション全体の状態を格納するオブジェクトへの参照を持っている場合、これらの状態オブジェクトはリソースと共に再インスタンス化され、状態データを正しく格納できなくなるため、これは問題になるようです。

[1] http://www.vogella.com/articles/REST/article.html#restjersey

4

2 に答える 2

17

Jersey は、クラスに で注釈を付けない限り、リクエストごとに各クラスの新しいインスタンスを確立します@Singleton

参照: https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2331

于 2013-02-06T21:20:20.310 に答える
1

実際、この投稿によると、デフォルトのアノテーション タイプはシングルトンからリクエストごとに変更されます。つまり、リクエストごとに 1 つのインスタンスが使用される前に、リクエストごとに新しいクラス オブジェクトを作成するようになりました。後で変更したい場合は、resourceFactory アノテーションを使用できます。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ResourceFactory(SingletonProvider.class)
public @interface Singleton {}

また、このリンクで com.sun.jersey.spi.resource JavaDocを確認できます。

于 2013-02-06T21:17:17.713 に答える