前两天在做websocket通信的时候,因为要与小程序进行数据交互,要将用户的三围数据通过硬件发送的消息存入数据库,这就需要在onMessage方法里进行持久化,但是userService层总是报空指针异常,加上@Component注解则会启动失败,出现websocket类注入失败和空指针异常,试了网上很多种方式,都没有用,最后通过Configurator获取httpsession,通过httpsession获取service 方式完成对数据库的操作
1、第一步编写一个继承Configurator的类
GetHttpSessionConfigurator类2、第二步在WebsocketTest中 编写@ServerEndpoint,并在onOpen 方法中获取service
创建成员变量HttpSession 通过HttpSession获取service3、第三步,由于HTTP协议与websocket协议的不同,导致没法直接从websocket中获取协议,放出去执行,会报空指针值异常,因为这个HttpSession并没有设置进去。而设置HttpSession。需要写一个继承ServletRequestListener的监听器。
将所有Request请求都带上HTTPSession4、至此,在WebSocket中就能用service去操作数据库了。
5、因为之前在网上试了很多种方法,所以启动类加了很多注解,但不知道与这一种方式有没有关系,如果不行的话,可以加上试试
网友评论