JAX-RSをやってみる (15) - ForcedAutoDiscoverable -

2014-07-16T00:00:00+00:00 Java JAX-RS

以前にJAX-RSをやってみる (3) – AutoDiscoverable -っていうので

AutoDiscoverableっていうのを使う事で外部ライブラリで定義されたクラスをコンポーネント的な形として登録して利用

と説明した。でこれ前提がCommonProperties.FEATURE_AUTO_DISCOVERY_DISABLEが設定されているようなケースであるような場合だと処理されない模様。でそれの処理を設定されていようが強制するのがForcedAutoDiscoverableな模様

っていう事でやってみた

※AutoDiscoverableなのとForcedAutoDiscoverableな両方をアプリケーションにデプロイする。但し前者はこっちでは書かないので

SampleAutoDiscoverable.java

package sample.internal;

import javax.ws.rs.core.FeatureContext;

import org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable;

public class SampleAutoDiscoverable implements ForcedAutoDiscoverable {
    @Override
    public void configure(FeatureContext context) {
    }
}

ってな感じでAutoDiscoverableじゃなくてForcedAutoDiscoverableを実装する

META-INF/services/org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable

中身にForcedAutoDiscoverableを実装したクラスをFQCNで指定する

sample.internal.SampleAutoDiscoverable

終わり

package sample;

import javax.ws.rs.ApplicationPath;

import org.glassfish.jersey.CommonProperties;
import org.glassfish.jersey.server.ResourceConfig;

@ApplicationPath("/")
public class SampleApplication extends ResourceConfig {

    public SampleApplication() {
        property(CommonProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true);
        packages("sample");
    }
}

てな感じでCommonProperties.FEATURE_AUTO_DISCOVERY_DISABLEを設定した状態で、AutoDiscoverableとForcedAutoDiscoverableを両方アプリケーションにデプロイするとAutoDiscoverableは処理されないがForcedAutoDiscoverableは処理される模様

OmniAuthを使ってfacebookログインする スクロールによるページング処理に関して#2