我正在使用码头来为我的应用程序提供网络套接字。我的一些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一起使用?