Usando guice con java websockets (JSR-356)
La especificación de websockets de Java (JSR-356) soporta, como es evidente, el uso de inyección de dependencias cuando se ejecuta en un entorno JavaEE mediante CDI.
El servidor Tomcat a partir de la versión 7 implementa soporte para esta tecnologia. Pero dado que no es un servidor JavaEE completo no incorpora soporte para CDI.
Si queremos usar una alternativa como Guice para inyección de dependencias tan sólo tenemos que ajustar el mecanismo de creación de las instancias de los endpoints.
Mediante este WSConfigurator
todas las instancias de nuestros puntos de entrada de websockets se crearan inyectando las dependencias utilizando Guice.
Pero hay que acordarse de utilizarlo en cada definición de un servicio websocket. Un ejemplo de una clase que he utilizado en un proyecto reciente:
Por último tenemos que cerrar el círculo inyectando el inyector en la clase WSConfigurator
. Esta es la parte sucia del invento pero es un patrón que suele aparecer cuando hay que añadir soporte de Guice en una libreria de terceros.
En mi caso utilizo un módulo específico para los websockets.