I think I moved forward. I changed version of javaee-web-api from 6.0 to 7.0: <dependency><groupId>javax</groupId><artifactId>javaee- web-api</artifactId><version>6.0</version><scope>provided</ scope></dependency> to: <dependency><groupId>javax</groupId><artifactId>javaee- web-api</artifactId><version>7.0</version><scope>provided</ scope></dependency>
However now I get an error on the server side: SEVERE: Servlet.service() for servlet [default] in context with path [] threw exception [Filter execution threw an exception] with root cause java.lang.NoSuchMethodError: org.apache.tomcat.InstanceManager.newInstance(Ljava/lang/Class;)Ljava/lang/Object; at org.apache.catalina.connector.Request.upgrade(Request.java:2850) at org.apache.catalina.connector.RequestFacade.upgrade(RequestFacade.java:1109) at org.apache.tomcat.websocket.server.UpgradeUtil.doUpgrade(UpgradeUtil.java:183) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 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:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) 2013/11/7 Marek Jagielski <marek.jagiel...@gmail.com> > Hello, > I am migrating my websocket application to the new API with version > 7.0.47. How can correctly make a configuration of tomcat7-maven-plugin to > use tomcat7-websocket on localhost. > Here what I have in my pom: > ... > <dependencies> > ... > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-catalina</artifactId></dependency> > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-coyote</artifactId></dependency> > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat7-websocket</artifactId></dependency> > </dependencies> > ... > </plugins> > <plugin> > > <groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId> > <configuration> > <url></url> > <server></server> > <path>/</path> > <port>7443</port> > <httpsPort>0</httpsPort> > <keystorePass>catmot</keystorePass> > > <tomcatUsers>src/main/tomcatconf/tomcat-users.xml</tomcatUsers> > </configuration> > </plugin> > </plugins> > </build> > </project> > > > and my parent pom: > ... > <dependencyManagement> > ... > <dependencies> > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-catalina</artifactId><version>7.0.47</version><scope>provided</scope></dependency> > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-coyote</artifactId><version>7.0.47</version><scope>provided</scope></dependency> > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat7-websocket</artifactId><version>7.0.47</version><scope>provided</scope></dependency> > > <dependency><groupId>javax</groupId><artifactId>javaee-web-api</artifactId><version>6.0</version><scope>provided</scope></dependency> > </dependencies> > </dependencyManagement> > ... > > <pluginManagement> > <plugins> > > <plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version> > <dependencies> > > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-catalina</artifactId><version>7.0.47</version><scope>runtime</scope></dependency> > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-coyote</artifactId><version>7.0.47</version><scope>runtime</scope></dependency> > <dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat7-websocket</artifactId><version>7.0.47</version><scope>runtime</scope></dependency> > </dependencies> </plugin> > </plugins> > </pluginManagement> > </build> > </project> > > > When using simple server end point > > @ServerEndpoint(value="/connector") > public class MachineWsConnector { > @OnOpen > public void onOpen(Session session) { } > > @OnClose > public void onClose(Session session, CloseReason closeReason) { } > } > > and trying to connect with client with: > > WebSocketContainer container = ContainerProvider.getWebSocketContainer(); > container.connectToServer(Client.class, new > URI("ws://localhost:7443/connector")); > > I get error on client side: > Exception in thread "main" javax.websocket.DeploymentException: The HTTP > response from the server [HTTP/1.1 500 Internal Server Error > ] did not permit the HTTP upgrade to WebSocket > at > org.apache.tomcat.websocket.WsWebSocketContainer.parseStatus(WsWebSocketContainer.java:601) > at > org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWebSocketContainer.java:585) > at > org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:317) > at > org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:183) > at > org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:204) > at com.systemincloud.api.machine.java.Client.main(Client.java:49) > > and on server side: > > java.lang.ClassNotFoundException: javax.servlet.http.HttpUpgradeHandler > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) > at java.lang.ClassLoader.defineClass1(Native Method) > at java.lang.ClassLoader.defineClass(ClassLoader.java:788) > at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) > at > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2918) > at > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669) > at > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) > at > org.apache.tomcat.websocket.server.UpgradeUtil.doUpgrade(UpgradeUtil.java:174) > at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:76) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > 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:502) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:724) > > Thanks in advance, > > Marek > > > -- Marek Jagielski +48 513 402 596