Я новичок в программировании веб-сокетов на Java 8, так что терпите меня, если у меня нет полного понимания.
Итак, вот моя реализация моих конечных точек клиента
Iу меня есть bean-компонент CDI:
@SessionScoped
@Named
public class MyBean implements Serializable{
@PostConstruct
private void init(){
MyClientEndpoint mce = new MyClientEndpoint();
}
public loadSomething(){
//do something.
}
}
, и моя конечная точка клиента выглядит следующим образом:
@ClientEndpoint
public class MyClientEndpoint {
@Inject
private MyBean myBean;
public MyClientEndpoint() {
URI uri;
try {
uri = new URI("ws://endpoint.example/somepath");
ContainerProvider.getWebSocketContainer().connectToServer(this, uri);
} catch (URISyntaxException | DeploymentException | IOException e) {
System.out.println("an error occured");
}
}
@OnOpen
public void onOpen(Session session) {
this.session = session;
}
@OnMessage
public void onMessage(String message) {
try {
myBean.loadSomething();
} catch (Exception ex) {
System.out.println("error");
ex.printStackTrace();
}
}
Я могу подключиться к своему ServerEndpoing и получить сообщение очень хорошо, однако яЯ получаю исключение NullPointerException при вызове компонента CDI.
В соответствии с этой публикацией вы можете внедрить компонент CDI в ClientEndpoint.Так что я не знаю, что именно здесь происходит не так.
PS: Мой сервер - Wildfly 14.