Chciałbym utworzyć pojedynczą instancję klasy, która nie jest zaangażowana w Jersey jako zasób lub usługa, a jednocześnie chciałaby, aby jego zależności zostały wstrzyknięte z usługi Jersey ServiceLocator.Jak uzyskać HK2 ServiceLocator na Jersey 2.12?
mogę zarejestrować tej klasy ręcznie w moim konstruktora ResourceConfig The ResourceConfig jest następnie przekazywany do metody fabryki Grizzly tak:
ResourceConfig resourceConfig = new DeviceServiceApplication();
LOGGER.info("Starting grizzly2...");
return GrizzlyHttpServerFactory.createHttpServer(BASE_URI,
resourceConfig, mServiceLocator);
Problemem pozostaje, jak się odniesienie do Jersey ServiceLocator więc mogę wywołać createAndInitialize(), aby uzyskać mój obiekt z wstrzykniętymi zależnościami. Widzę w poprzednich wersjach z Jersey, że istnieją warianty konstruktorów, które oczekują ApplicationHandler'a, który oczywiście zapewnia dostęp do lokalizatora usług (jak inicjuję to inna sprawa). Możesz także zobaczyć, że próbowałem przejść w rodzicu ServiceLocator, ale oczywiście rozdzielczość jest wykonywana z potomka -> nadrzędny lokalizator, a nie w innym kierunku, więc prośba rodzica o mój obiekt nie działa, ponieważ typy Jersey @Contract i @Service nie są widoczne tutaj.
Czy muszę użyć czegoś innego niż GrizzlyHttpServerFactory? Czy poddaje się i ręcznie podłączam zależności singletona?
jest to jedyny sposób? czy jest jakiś inny sposób? dostęp do cyklu życia kontenera wydaje się być przesadą. Dzięki – Architucas
Innym alternatywnym rozwiązaniem jest: https://stackoverflow.com/questions/21149161/jersey-and-hk2-servicelocator/21998307#21998307 – ozhan
Co to jest konfiguracja zasobów? i kiedy jest wywoływana ta klasa z wyjątkiem 'myResourceConfig.getServiceLocator()'? –