Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chat demo throws exception and only displays "Connecting.." in master #56

Closed
vvilhonen opened this issue May 31, 2011 · 6 comments
Closed
Assignees
Labels
Milestone

Comments

@vvilhonen
Copy link

When opening the chat demo it gets stuck saying "Connecting...". Following exception is printed on the console.

Jetty-websocket's WebSocketFactory doesn't have an empty argument constructor in version 7.4.1.v20110513, which is defined in the project file.

Using version 7.1.6.v20100715 seems to be getting running further as it fails with NullPointerException in the SocketIOSupport handle method.

I'm using sbt jetty-run task to run the project. I noticed that the documentation says that it's not working from sbt, but it would be so much more convenient to be able to run it from there.

java.lang.NoSuchMethodError: org.eclipse.jetty.websocket.WebSocketFactory: method <init>()V not found
    at com.glines.socketio.server.transport.WebSocketTransport.<init>(WebSocketTransport.java:211)
    at org.scalatra.socketio.SocketIOSupport$class.initialize(SocketIOSupport.scala:138)
    at org.scalatra.ChatServlet.initialize(ChatServlet.scala:6)
    at org.scalatra.ScalatraServlet.init(ScalatraServlet.scala:43)
    at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:436)
    at org.eclipse.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:331)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:515)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1352)
    at org.scalatra.ScalatraFilter$$anonfun$1.apply$mcV$sp(ScalatraFilter.scala:26)
    at org.scalatra.ScalatraFilter$$anonfun$1.apply(ScalatraFilter.scala:26)
    at org.scalatra.ScalatraFilter$$anonfun$1.apply(ScalatraFilter.scala:26)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2$$anonfun$8.apply(ScalatraKernel.scala:137)
    at scala.Option.getOrElse(Option.scala:109)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply$mcV$sp(ScalatraKernel.scala:137)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ScalatraKernel.scala:134)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1$$anonfun$apply$mcV$sp$2.apply(ScalatraKernel.scala:134)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ScalatraKernel.scala:134)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1.apply(ScalatraKernel.scala:134)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1$$anonfun$apply$mcV$sp$1.apply(ScalatraKernel.scala:134)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1.apply$mcV$sp(ScalatraKernel.scala:133)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1.apply(ScalatraKernel.scala:133)
    at org.scalatra.ScalatraKernel$$anonfun$handle$1.apply(ScalatraKernel.scala:133)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
    at org.scalatra.ScalatraKernel$class.handle(ScalatraKernel.scala:132)
    at org.scalatra.FilterExample.handle(FilterExample.scala:3)
    at org.scalatra.ScalatraFilter$$anonfun$doFilter$1.apply$mcV$sp(ScalatraFilter.scala:18)
    at org.scalatra.ScalatraFilter$$anonfun$doFilter$1.apply(ScalatraFilter.scala:18)
    at org.scalatra.ScalatraFilter$$anonfun$doFilter$1.apply(ScalatraFilter.scala:18)
    at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
    at org.scalatra.ScalatraFilter$class.doFilter(ScalatraFilter.scala:17)
    at org.scalatra.FilterExample.doFilter(FilterExample.scala:3)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:937)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:346)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1048)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:601)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
    at java.lang.Thread.run(Thread.java:662)
@casualjim
Copy link
Member

We can't use the sbt jetty-run task because of class loader issues which prevent socket.io from accessing jetty classes like HttpConnection.getCurrent (if that is null gives a good indication that you have duplicate jars or other class loader issues)

Will check the socket-io stuff for the newer jetty version.

@vvilhonen
Copy link
Author

What is the exact issue? Duplicate jars? It's very annoying having to deploy the war to jetty all the time when developing socketio related stuff..

@casualjim
Copy link
Member

you can also create an embedded jetty server and launch that then sbt doesn't come into play

we have a sbt task that runs such an embbedded server as run task

@ghost ghost assigned casualjim Jul 19, 2011
@rossabaker
Copy link
Member

Confirmed that this is still broken. It used to work with sbt jetty-run -- I've seen it work, and that's how I used to launch it. Log just says:

[warn] Error for /socket.io/socket.io.js

I tried upgrading to Jetty 8.0.0.M2 (socketio-java builds against this), and it says:

[warn] Error for /socket.io/websocket

There has been some action in the upstream library. May be worth merging that as a preliminary step.

@rossabaker
Copy link
Member

As of latest snapshot of socketio-java, example now works for me in Firefox 5.0/Linux using sbt. Fails in Chromium 12.0.742.112.

@rossabaker
Copy link
Member

There are wicked classloader issues with Jetty and SocketIO-java. Running it outside of sbt should work.

We are going to deprecate this module. Our recommendation will be to use Atmosphere as an alternative to SocketIO-Java. An example can be found at https://gist.github.com/913295.

rossabaker added a commit that referenced this issue Aug 16, 2011
Upstream library is buggy and no longer supported.  Our integration
is still here if it works for you, but we recommend building on
Atmosphere moving forward.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants