在Websocket服务器端点中获取错误

时间:2014-01-10 07:03:45

标签: java websocket

这是文件,我在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?

3 个答案:

答案 0 :(得分:20)

缺少的类是java ee 7 api的一部分。 如果您使用maven构建项目,请查看 在以下存储库

http://mvnrepository.com/artifact/javax/javaee-api/7.0

并将此依赖项添加到您的项目中:

<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>

如果您不使用maven,可以从上面的页面下载jar。 http://repo1.maven.org/maven2/javax/javaee-api/7.0/javaee-api-7.0.jar

然后你有了API。

答案 1 :(得分:6)

JSR-356定义的javax.websocket下的类是独立的。它们可以在完全独立的服务器上运行,也可以在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 +)

答案 2 :(得分:0)

你可以新添加服务器说tomcat 7.0,自动解决这个错误。由于支持jar可以在tomcat lib中使用。