java - Tomcat8 WebSockets (JSR-356) with Guice 3.0 -
i trying @inject guice service @serverendpoint. using tomcat 8.0.15 jsr-356 implementation. however, dependency injection isn't working. there additional configuration needs done in order enable guice injection? note using standard javax annotations only.
i figured out. websocket endpoint needs have custom configurator, creates , returns instances using guice injector instance.
example:
custom guice servlet context listener:
public class customservletcontextlistener extends guiceservletcontextlistener {      public static injector injector;      @override     protected injector getinjector() {         injector = guice.createinjector(...);         return injector;     } }   websockets custom configurator:
public class customconfigurator extends configurator {   @override   public <t> t getendpointinstance(class<t> clazz)         throws instantiationexception {     return customservletcontextlistener.injector.getinstance(clazz);   } }   and in websocket endpoint:
@serverendpoint(value = "/ws/sample_endpoint", configurator = customconfigurator.class) public class sampleendpoint {   private final someservice service;    @inject   public sampleendpoint(someservice service) {     this.service = service;   }   ... }      
Comments
Post a Comment