Websocket服务器端点出现错误

6

这是一个文件,我在 import javax.websocket@serverEndpoint("/websocket") 两行代码中遇到了编译错误。为什么这个注释没有被识别?请帮我检查一下。

package pack.exp;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket")
public class Hello 
{
{

      private static Set<Session> clients = 
        Collections.synchronizedSet(new HashSet<Session>());

      @OnMessage
      public void onMessage(String message, Session session) 
        throws IOException {

        synchronized(clients){
          // Iterate over the connected sessions
          // and broadcast the received message
          for(Session client : clients){
            if (!client.equals(session)){
              client.getBasicRemote().sendText(message);
            }
          }
        }

      }

      @OnOpen
      public void onOpen (Session session) {
      // Add session to the connected sessions set
        clients.add(session);
      }

      @OnClose
      public void onClose (Session session) {
        // Remove session from the connected sessions set
        clients.remove(session);
      }

    }
}

请帮我处理这个错误。在这段代码中有一些特定的API需要实现吗?


请在此处添加堆栈跟踪。 - Abimaran Kugathasan
  1. 导入 javax.websocket 无法解析。
  2. ServerEndpoint 无法解析为类型。
- Sandeep
你需要将那个库的jar包添加到类路径中。 - Abimaran Kugathasan
@ Kugathasan Abimaran 好的,您能告诉我需要哪些jar文件以及从哪里下载它们吗? - Sandeep
3个回答

22

请使用http://search.maven.org/进行官方Maven中央仓库搜索,该网站也更加更新。 - Joakim Erdfelt

6
javax.websocket下的类是由JSR-356定义为独立的。它们可以在完全独立的服务器上运行,也可以在Java EE 7容器中运行。
如果您仅使用javax.websocket而不关心Java EE 7的其余部分,则只需在提供的范围内使用官方的javax.websocket工件即可。
这里是直接查找工件的搜索引用。

https://search.maven.org/artifact/javax.websocket/javax.websocket-api/1.0/bundle

这是Maven中央仓库系统的官方搜索页面,它还包括有关Maven、Grails、Ivy、Buildr、Grape和SBT构建系统引用该工件的信息。
Maven POM参考文档如下:
<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>

请确保您不在*.war文件中包含此工件,因为此功能将由您决定部署到的任何容器提供。(例如Eclipse Jetty 9.1+或Apache Tomcat 8.0+)


0

您可以新添加服务器,例如Tomcat 7.0,这样错误就会自动解决。因为支持的JAR文件已经在Tomcat lib中提供了。


我认为OP正在尝试解决问题,而不必重新安装服务器。 - andy
我一点也不清楚,但我猜这可能是一个很好的方法,而不需要再次添加服务器。这对我有效,所以我只是建议。@andy - Uday Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接