2013-04-06 16 views
6

Chciałbym skorzystać z gniazda internetowego i zacząłem to robić za pomocą API tomcat. Obecnie korzystam z Tomcat 7.0.37.Używanie gniazda internetowego z Tomcat 7

Próbowałem wykonać przykładowy kod z tomcat documentation.

Używam również Maven dla projektu, więc dodałem to do mojego pom.xml:

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

Pierwszą rzeczą, że to dziwne, otrzymuję komunikat o błędzie w Eclipse dla tej linii:

wiadomość
private class MyMessageInbound extends MessageInbound 

błąd jest „hierarchia typu MyMessageInbound jest niezgodne”, ale nadal jestem w stanie skompilować i uruchomić webapp.

Dodałem także konfigurację w web.xml następująco:

<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> 

Tak, jestem w stanie uruchomić webapp, ale kiedy przejść na stronę czatu, pojawia się błąd na czacie z napisem "Info: WebSocket zamknięty". Tomcat zalogować dać mi następujący komunikat:

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) 

Myślę, że jedynym brakującym informacji tutaj jest źródłem chat page.

Ktoś widzi, co robię źle?

Dzięki

Odpowiedz

6

Rozwiązałem problem!

Starałem się pakować projekt z Maven w wierszu polecenia, a ten błąd:

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

od tego, po prostu dodaje się następujące do pom.xml:

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

Mam nadzieję, że pomoże to innym osobom z tym samym problemem.

+0

to działało również dla mnie. (Y) – prime

0

Czy twoja dziedziczona klasa MessageInbound implementuje interfejs Servlet? Czy możesz podać implementację doGet swojej ChatWebSocketServlet lub klasy MessageInbound? Przykro mi, człowieku, twoje informacje są niekompletne ...

+0

Cała klasa jest dostępna w pierwszym [link] (http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/ chat/ChatWebSocketServlet.java? revision = 1354477 & view = markup) pierwszego postu. I to może nie jest jasne w moim ostatnim poście, ale problem jest rozwiązany;) – Nuzei

+0

To dobrze usłyszeć. Opublikuj także swoją historię sukcesu. Zgadnij, że masz problemy z pozwoleniem z Tomcat i WebSockets, prawda? –