2013-04-06 4 views
6

웹 소켓을 사용하고 싶습니다. Tomcat API를 사용하기 시작했습니다. 현재 Tomcat 7.0.37을 사용하고 있습니다.Tomcat 7에서 웹 소켓 사용

바람둥이 documentation에서 예제 코드를 따라했습니다.

나는 또한 프로젝트에 대한 받는다는 사용하고

, 그래서 난 내 의 pom.xml이 추가 :

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-catalina</artifactId> 
    <version>7.0.39</version> 
    <scope>provided</scope> 
</dependency> 
이상해

우선, 나는이 라인 이클립스에서 오류 메시지가 :

private class MyMessageInbound extends MessageInbound 

오류 메시지는 "유형의 MyMessageInbound의 계층 구조가 일치하지입니다 "입니다,하지만, 난 여전히 웹 애플리케이션을 컴파일하고 실행 할 수 있어요.

<servlet> 
    <servlet-name>wsChat</servlet-name> 
    <servlet-class>websocket.chat.ChatWebSocketServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>wsChat</servlet-name> 
    <url-pattern>/websocket/chat</url-pattern> 
</servlet-mapping> 

그래서, 내가 웹 애플리케이션을 실행할 수 있어요,하지만 난 채팅 페이지로 갈 때, 나는 오류가 발생 :

은 또한 다음과 같은 web.xml에의 구성을 추가 "Info : WebSocket closed."채팅 보드에 있습니다.

SEVERE: Servlet.service() for servlet [wsChat] in context with path [/websocket-tuto] threw exception [L''exécution de la servlet a lancé une exception] with root cause 
java.lang.NoSuchMethodError: websocket.chat.ChatWebSocketServlet$MyMessageInbound.<init>(Lwebsocket/chat/ChatWebSocketServlet;Luwebsocket/chat/ChatWebSocketServlet$MyMessageInbound;)V 
at websocket.chat.ChatWebSocketServlet.createWebSocketInbound(ChatWebSocketServlet.java:34) 
at org.apache.catalina.websocket.WebSocketServlet.doGet(WebSocketServlet.java:121) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

내가 여기있는 유일한 누락 된 정보가 chat page의 근원이라고 생각 : Tomcat은 나에게 다음과 같은 메시지를 줄 로그인합니다.

누구나 내가 뭘 잘못하고 있는지 보게 ??

감사합니다.

답변

6

나는이 문제를 해결했습니다!

내가 명령 줄에서 메이븐과 함께 프로젝트를 패키징하고,이 오류를 얻을려고 :

<dependency> 
    <groupId>org.apache.tomcat</groupId> 
    <artifactId>tomcat-coyote</artifactId> 
    <version>7.0.39</version> 
    <scope>provided</scope> 
</dependency> 
이에서

[ERROR] class file for org.apache.coyote.http11.upgrade.UpgradeInbound not found 

을, 난 그냥하여 의 pom.xml에 다음을 추가

나는 이것이 동일한 문제를 가진 다른 사람들을 도울 것이라고 희망한다.

+0

이 정보는 저에게 효과적입니다. (Y) – prime

0

상속 된 클래스 인 MessageInbound가 서블릿 인터페이스를 구현합니까? ChatWebSocketServlet 또는 MessageInbound 클래스의 doGet 구현을 제공 할 수 있습니까? 죄송합니다. 귀하의 정보가 전혀 불완전합니다.

+0

전체 클래스는 첫 번째 [link] (http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/)에서 제공됩니다. chat/ChatWebSocketServlet.java? revision = 1354477 & view = 마크 업). 그리고 그것은 내 마지막 게시물에서 분명하지 않을 수도 있지만 문제는 해결됩니다;) – Nuzei

+0

잘 듣고 있습니다. 성공 사례도 게시하십시오. Tomcat 및 WebSocket에 대한 권한 문제가 있다고 생각하십니까? –

관련 문제