2014-01-10 3 views
3

이 파일이 있는데 import javax.websocket 줄과 @serverEndpoint("/websocket")에 컴파일 오류가 발생합니다. 주석을 사용하지 않는 이유는 무엇입니까?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가 있습니까?

+0

여기에 스택 추적을 추가하십시오. –

+0

@ Kugathasan Abimara 1. javax.websocket 가져 오기를 확인할 수 없습니다. 2.ServerEndpoint를 – Sandeep

+0

유형으로 확인할 수 없습니다. classpath에 해당 라이브러리 jar를 추가해야합니다. –

답변

16

누락 된 클래스는 Java 응용 프로그램의 일부입니다. 당신이 받는다는 사용하여 프로젝트를 빌드하는 경우 다음 저장소

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

살펴 을 가지고 프로젝트에이 종속성을 추가 :

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

당신이 받는다는 사용하지 않는 경우 위 페이지에서 항아리를 다운로드 할 수 있습니다. http://repo1.maven.org/maven2/javax/javaee-api/7.0/javaee-api-7.0.jar

다음 API가 있습니다.

+0

공식 maven 중앙 저장소 검색을 위해 http://search.maven.org/를 사용하십시오. :) –

+0

@ Wintermute Thanx – Sandeep

6

javax.websocket 아래의 클래스는 JSR-356에 의해 독립형으로 정의됩니다. 완전히 독립형 서버 또는 Java EE 7 컨테이너에서 실행할 수 있습니다.

javax.websocket 만 사용하고 나머지 Java EE 7은 신경 쓰지 않는다면 제공된 범위에서 공식 javax.websocket 아티팩트를 사용하십시오.

다음은 직접 이슈에 대한 검색 조회입니다. 메이븐 중앙 저장소 시스템에 대한 공식 검색 페이지입니다

http://search.maven.org/#artifactdetails%7Cjavax.websocket%7Cjavax.websocket-api%7C1.0%7jar

, 또한 받는다는, Grails의, 아이비, buildr, 포도, 그리고 SBT에 대한 아티팩트에 시스템 참조를 구축 포함되어 있습니다.

받는다는 치어 기준은 다음과 같습니다

<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에서 사용할 수 있습니다.

+0

OP는 서버를 다시 설치하지 않고 문제를 해결하려고합니다. – andy

+0

나는 전혀 몰라. 서버를 다시 추가하지 않으면 큰 접근이 될 것 같아.이 일은 나를 위해 일했고, 그래서 나는 제안했다. @andy –

관련 문제