我是Java 8 Websocket编程的新手,如果我不完全了解,请多多包涵。
这是我对客户端端点的实现
我有一个CDI bean:
@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并接收消息,但是,但是在调用CDI Bean时出现NullPointerException。
根据此post,您可以将CDI bean注入ClientEndpoint。所以我不知道这里到底出了什么问题。
PS: 我的服务器是Wildfly14。