带有Guice依赖注入的Jetty Websocket

时间:2018-12-19 18:59:58

标签: java dependency-injection websocket jetty guice

我正在使用码头来为我的应用程序提供网络套接字。我的一些websocket端点需要注入一些数据访问对象。

Maven依赖项:

<dependency>
  <groupId>com.google.inject</groupId>
  <artifactId>guice</artifactId>
  <version>4.2.1</version>
</dependency>
<dependency>
  <groupId>javax.websocket</groupId>
  <artifactId>javax.websocket-api</artifactId>
  <version>1.0</version>
</dependency>
<dependency>
  <groupId>org.eclipse.jetty.websocket</groupId>
  <artifactId>javax-websocket-server-impl</artifactId>
  <version>9.4.12.v20180830</version>
</dependency>

终点:

import javax.inject.Inject;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint(value="/host/handshake/", 
                decoders = HandshakeMessageDecoder.class, 
                encoders = HandshakeMessageEncoder.class)
public class HostHandshakeEndpoint {
    @Inject
    private HostDao hostDao;

    @OnMessage
    public void onMessage(Session session, HandshakeMessage handshakeMessage) {
        if (handshakeMessage.isFirstTouch()) {
            int hostId = hostDao.getHostIdByHostname(handshakeMessage.getHostName());
            try {
                session.getBasicRemote().sendText("hostId: " + hostId);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

虽然我的websocket通常可以正常工作,但我似乎无法填写@Inject注释的字段。

如何将guice-injection与嵌入式jetty-websocket-server一起使用?

0 个答案:

没有答案