リソースまたはサービスとしてジャージーに関与していないクラスのシングルトン インスタンスを作成したいのですが、その依存関係をジャージー ServiceLocator から注入したいと考えています。
このクラスを手動で ResourceConfig コンストラクターに登録できます。ResourceConfig は次のように Grizzly ファクトリ メソッドに渡されます。
ResourceConfig resourceConfig = new DeviceServiceApplication();
LOGGER.info("Starting grizzly2...");
return GrizzlyHttpServerFactory.createHttpServer(BASE_URI,
resourceConfig, mServiceLocator);
残っている問題は、Jersey ServiceLocator への参照を取得する方法です。これにより、createAndInitialize() を呼び出して、依存関係が注入されたオブジェクトを取得できます。以前のJerseyバージョンには、もちろんサービスロケーターへのアクセスを提供するApplicationHandlerを期待するコンストラクターバリアントがあったことがわかりました(それをどのように初期化するかは別の問題です)。また、親 ServiceLocator を渡そうとしたこともわかりますが、もちろん、解決は子 -> 親ロケーターから行われ、他の方向では行われないため、Jersey @Contract および @Service タイプではないため、親にオブジェクトを要求することは失敗します。ここに表示されます。
GrizzlyHttpServerFactory 以外のものを使用する必要がありますか? あきらめて、シングルトンの依存関係を手動で配線する必要がありますか?