2016-04-07 11 views
4

Ich versuche, diesem Beitrag der upvoted Antwort zu folgen: Best practice for REST token-based authentication with JAX-RS and JerseyWie verwendet man CDI-Events in Java Jersey?

Ich bin mit dem CDI Ansatz und in meinem Filter habe ich die Definition:

@Inject 
@AuthenticatedUser 
Event<String> userAuthenticatedEvent; 

Aber, wenn ich tomcat laufen 7, erhalte ich der folgende Fehler:

org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=Event<String>,parent=AuthenticationFilter,qualifiers={@com.wink.rest.security.annotation.AuthenticatedUser()},position=-1,optional=false,self=false,unqualified=null,567185196) 
    at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:75) 
    at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:945) 
    at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:979) 
    at org.glassfish.jersey.ext.cdi1x.internal.AbstractCdiBeanHk2Factory$2.getInstance(AbstractCdiBeanHk2Factory.java:142) 
    at org.glassfish.jersey.ext.cdi1x.internal.AbstractCdiBeanHk2Factory._provide(AbstractCdiBeanHk2Factory.java:91) 
    at org.glassfish.jersey.ext.cdi1x.internal.GenericCdiBeanHk2Factory.provide(GenericCdiBeanHk2Factory.java:63) 

ich habe versucht alles, was ich auf google gefunden und Stackoverflow versuchen, dieses Problem zu beheben, aber keine der Lösungen gearbeitet. So, jetzt bin ich mir nicht sicher, was ich sonst tun soll. Hat jemand einen Rat?

+0

Sie sagen, dass Sie auf Tomcat laufen. Welche CDI-Laufzeit verwenden Sie? –

+0

Sie können auch in hk2 Ereignisse suchen: https://hk2.java.net/2.5.0-b03/events.html – jwells131313

Antwort

1

Nachdem ich mit dem gleichen Problem gekämpft habe, habe ich eine Lösung gefunden. Ich wechselte von TomCat zu Glassfish und aktualisierte Maven-Abhängigkeiten, um mit denen von übereinzustimmen. Danach funktionierte es wie Magie.