if you scope this producer you would have a lazy instance and in the context of the timer you wouldnt call it so you wouldnt have this NPE
Romain Manni-Bucau @rmannibucau | Blog | Old Blog | Github | LinkedIn 2017-12-07 9:49 GMT+01:00 Matthew Broadhead <matthew.broadh...@nbmlaw.co.uk>: > i have this method to @Produces KeycloakSecurityContext > @Produces > @Default > @Dependent > public KeycloakSecurityContext keycloakSecurityContext() { > try { > if (httpServletRequest instanceof KeycloakPrincipal) { > KeycloakPrincipal<KeycloakSecurityContext> keycloakPrincipal > = (KeycloakPrincipal<KeycloakSecurityContext>) httpServletRequest > .getUserPrincipal(); > return keycloakPrincipal.getKeycloakSecurityContext(); > } > } catch (NullPointerException e) { > // e.printStackTrace(); > } > return null; > } > i added catch the NullPointerException because httpServletRequest causes an > NPE if the KeycloakSecurityContext is injected into an @ApplicationScoped > where it has been run from a timer and there is no servlet request. there > is no way to null check the httpServletRequest as it blows up behind the > scenes > is this the right way to do it or is there another way to detect there is no > request?