首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat websocket TEXT_FULL_WRITING

Tomcat websocket TEXT_FULL_WRITING
EN

Stack Overflow用户
提问于 2017-02-23 09:28:59
回答 1查看 1K关注 0票数 3

在Tomcat8.5.9中,session.getAsyncRemote().sendText()方法抛出

java.lang.IllegalStateException:远程端点处于状态TEXT_FULL_WRITING

我在调用之前创建了一个互斥对象,用于发送方法,并在调用之后释放:

代码语言:javascript
复制
 sendMutex.acquireUninterruptibly();
    try{
      session.getAsyncRemote().sendText(gson.toJson(message));
    }catch(Exception exception){
      logger.error("Session : "+session.getId()+" message : "+gson.toJson(message)+" exception : "+exception.getMessage(),exception);
    }
    sendMutex.release();

但是,当调用此方法时,仍会引发异常。除此方法外,不调用session.getAsyncRemote()、.sendText()或session.getBasicRemote().sendText()。ServerEndpoint在onMessage方法中返回void。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-09-23 19:56:38

也有同样的问题。我找到了这个解决方案的工作,似乎没有造成其他问题。

代码语言:javascript
复制
this.session.getBasicRemote().sendObject(message);

而不是使用

代码语言:javascript
复制
this.session.getAsyncRemote().sendObject(message);

显然,这是tomcat的一个常见问题,websocket会话实例可以同时从不同的线程访问。

代码语言:javascript
复制
synchronized(ep)
    {
        this.session.getAsyncRemote().sendObject(message);
    }

如果ep是一个静态对象,在我的经验中也不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42411679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档