Я использую причал для предоставления веб-сокетов для моего приложения.Некоторые из моих конечных точек 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();
}
}
}
}
В то время как мои веб-сокеты в целом работают, я не могу заполнить свои аннотированные @ Inject поля.
Как использовать guice-инъекцию свстроенный джет-веб-сокет-сервер?