JAX-RSをやってみる (15) - ForcedAutoDiscoverable -
以前に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は処理される模様