Hello,
I got your code from
https://github.com/jetty-project/embedded-jetty-websocket-examples
Made a minor change to it to get the web app context going
ResourceHandler resource_handler =
new ResourceHandler();
resource_handler.setResourceBase("C:\\Mpower\\Minimal\\WebContent");
resource_handler.setWelcomeFiles(new
String[]{ "index.html" });
HandlerList handlers =
new HandlerList();
//handlers.setHandlers(new Handler[] { resource_handler, context });
handlers.setHandlers(new
Handler[] { resource_handler, context, new DefaultHandler() });
server.setHandler(handlers);
I still get eventclient.java working, but now I have a index.html that simply includes inde,js as follows
var ws =
new WebSocket("ws://localhost:8080/events/");
ws._onopen_ =
function() {
alert("Opened!");
ws.send("Hello Server");
};
ws._onmessage_ =
function (evt) {
alert("Message: " + evt.data);
};
ws._onclose_ =
function() {
alert("Closed!");
};
ws._onerror_ =
function(err) {
alert("Error: " + err);
};
I get an error 500 on chrome and on the server side I get
2014-07-29 14:38:02.711:WARN:oejs.ServletHandler:qtp2020325258-12: /events/
java.lang.IllegalArgumentException
at org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension.setConfig(PerMessageDeflateExtension.java:154)
at org.eclipse.jetty.websocket.common.extensions.WebSocketExtensionFactory.newInstance(WebSocketExtensionFactory.java:69)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.negotiate(ExtensionStack.java:230)
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.upgrade(WebSocketServerFactory.java:476)
at org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:172)
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:153)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1622)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:549)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:219)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:462)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:744)
I think that the websocketcontainer is not wired to the server, can you please help?
Thanks again for all your help
Regards
-
Anu
From: jetty-users-bounces@xxxxxxxxxxx [mailto:jetty-users-bounces@xxxxxxxxxxx]
On Behalf Of Joakim Erdfelt
Sent: Tuesday, July 29, 2014 11:41 AM
To: JETTY user mailing list
Subject: Re: [jetty-users] can someone please share jsr 356 example with _javascript_
This might be useful to you too.
Its also important to know that WebSocket is a "GET with Upgrade to WebSocket".
All other requests will be handled by non-websocket mechanisms.
Do what you want. return 404, 500, show an error message, redirect to another service page somewhere else, respond with html + _javascript_ to give browsers something to use to talk to you, etc...
Here's a bit more complex of an example.
We use this to test out browser websocket support. namely changes to the spec and extensions.
It starts a server, with 1 websocket endpoint, and on normal GET requests will return static content (html/css/js) from src/test/resources
Expert advice, services and support from from the Jetty & CometD experts
On Tue, Jul 29, 2014 at 8:04 AM, Padki, Anuradha <anuradha.padki@xxxxxxxx> wrote:
Thanks so much, got rid of compilation error, it was due to eclipse adding the servlet-api in the
build path.
So I am trying your minimal example now, but I do not understand what should code is expected in
the servlet.
This is the code I am trying (as on the mailing lsit)
Thanks you very much for your help.
-
Anu
package com.example.minimal;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.websocket.jsr356.server.ServerContainer;
import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;
/**
* Example of setting up a javax.websocket server with Jetty embedded
*/
public class WebSocketJsrServer
{
/**
* A server socket endpoint
*/
@ServerEndpoint(value = "/echo")
public static class EchoJsrSocket
{
@OnMessage
public void onMessage(Session session, String message)
{
session.getAsyncRemote().sendText(message);
}
}
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
// Add a servlet to your context.
// It is required that you provide at least 1 servlet.
// Recommended that this servlet merely provide a
// "This is a websocket only server" style response to GET requests
context.addServlet(new ServletHolder(new HelloServlet()),"/*");
// Enable javax.websocket configuration for the context
ServerContainer wsContainer = WebSocketServerContainerInitializer.configureContext(context);
// Add your websockets to the container
wsContainer.addEndpoint(EchoJsrSocket.class);
server.start();
context.dumpStdErr(); // show the context details
server.join();
}
}
From:
jetty-users-bounces@xxxxxxxxxxx [mailto:jetty-users-bounces@xxxxxxxxxxx]
On Behalf Of Joakim Erdfelt
Sent: Tuesday, July 29, 2014 10:37 AM
To: JETTY user mailing list
Subject: Re: [jetty-users] can someone please share jsr 356 example with _javascript_
The error ...
class "javax.servlet.http.HttpSessionIdListener"'s signer information does not match signer information of other classes in the same package
means you have 2 (or more) jars with javax.servlet.http.HttpSessionIdListener in it.
one of those jars is signed, the other ones either don't have jar signatures, or have different ones.
It is very uncommon to mix jetty embedded
and jetty.xml in the same application.
While it is possible, you'll essentially end up with what jetty-start does, which is what the jetty-distribution is all about.
Expert advice, services and support from from the Jetty & CometD experts
On Tue, Jul 29, 2014 at 6:52 AM, Padki, Anuradha <anuradha.padki@xxxxxxxx> wrote:
Thanks so very much, I am trying some examples from internet (or from user-group) but I can’t even
get those compiled.
I am trying the minimal example you mentioned on the mailing list. My goal is to get
embedded jetty working (preferably with jetty.xml, I could get a hello servlet working with jetty.xml on 9.1; the trouble starts with websocketservlets, however right now I am only trying to get minimal websocket working)
BTW checked the jars, I have same jars as from your email.
Now for your minimal code I am totally stuck at
class "javax.servlet.http.HttpSessionIdListener"'s signer information does not match signer information of other classes in the same
package
I so very much appreciate your help, but I don’t want to bother you a lot, is there a very good example
for the 9.1 jsr 356 embedded jetty with any html/_javascript_ code?
I will like to try that.
Regards and thanks a bunch.
-
Anu
From:
jetty-users-bounces@xxxxxxxxxxx [mailto:jetty-users-bounces@xxxxxxxxxxx]
On Behalf Of Joakim Erdfelt
Sent: Tuesday, July 29, 2014 9:31 AM
To: JETTY user mailing list
Subject: Re: [jetty-users] can someone please share jsr 356 example with _javascript_
Jetty 9.1.4 has JSR-356 support.
$ ls -la jetty-distribution-9.1.4.v20140401/lib/websocket/
drwxrwxr-x. 2 joakim joakim 4096 Apr 7 09:51 .
drwxrwxr-x. 12 joakim joakim 4096 Apr 7 09:51 ..
-rw-rw-r--. 1 joakim joakim 36611 Apr 2 10:14 javax.websocket-api-1.0.jar <!-- the official JSR-356 API Jar -->
-rw-rw-r--. 1 joakim joakim 156243 Apr 2 10:14 javax-websocket-client-impl-9.1.4.v20140401.jar <!-- the javax.websocket implementation by jetty -->
-rw-rw-r--. 1 joakim joakim 36802 Apr 2 10:14 javax-websocket-server-impl-9.1.4.v20140401.jar <!-- the javax.websocket.server implementation by jetty -->
-rw-rw-r--. 1 joakim joakim 43680 Apr 2 10:14 websocket-api-9.1.4.v20140401.jar
-rw-rw-r--. 1 joakim joakim 35188 Apr 2 10:14 websocket-client-9.1.4.v20140401.jar
-rw-rw-r--. 1 joakim joakim 170297 Apr 2 10:14 websocket-common-9.1.4.v20140401.jar
-rw-rw-r--. 1 joakim joakim 35774 Apr 2 10:14 websocket-server-9.1.4.v20140401.jar
-rw-rw-r--. 1 joakim joakim 17923 Apr 2 10:14 websocket-servlet-9.1.4.v20140401.jar
If it isn't working for you, can you give some details on your attempts?
* your ${jetty.base} configurations (if using the distribution)
* your webapp context deployable xml (if you are using xml based deploys)
* your server.dump() output (if using embedded mode)
* your code on attempting to access JSR-356 (in your webapp)
Expert advice, services and support from from the Jetty & CometD experts
On Tue, Jul 29, 2014 at 6:23 AM, Padki, Anuradha <anuradha.padki@xxxxxxxx> wrote:
Thanks for the response Joakim
I am sorry I did not phrase it right: I got websocket working on 8 (not jsr 356) and I am trying
to get jsr 356 working on 9.1.4, so it will work only on 9.2 , is that correct?
Then
From:
jetty-users-bounces@xxxxxxxxxxx [mailto:jetty-users-bounces@xxxxxxxxxxx]
On Behalf Of Joakim Erdfelt
Sent: Tuesday, July 29, 2014 9:21 AM
To: JETTY user mailing list
Subject: Re: [jetty-users] can someone please share jsr 356 example with _javascript_
JSR356 is available on Jetty 9.2 and newer.
It is not available on Jetty 8.
Expert advice, services and support from from the Jetty & CometD experts
On Tue, Jul 29, 2014 at 5:47 AM, Padki, Anuradha <anuradha.padki@xxxxxxxx> wrote:
I am new to Jetty, I could get jetty 8 websocket working, but am struggling with getting jsr 356 working.
I tried many example codes but no luck, can somebody please share a simple sample of code with jsr356 with _javascript_?
Any help is greatly appreciated.
- Anu
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users