java - Running a Websocket connexion with an embedded atmosphere and jersey servlet -



java - Running a Websocket connexion with an embedded atmosphere and jersey servlet -

i trying instance of atmosphere run servlet without using web.xml , using websocket functionnality.

it seems mapping not working, because able connect server (localhost:8080) , javascript tells me ws connection working, handler not beingness recognized (methods never called). websockethandleradapter seems never used atmosphereservlet.

all examples found using web.xml setup servlets, need able instanciate servlets (atmosphere , bailiwick of jersey in jetty container) programmatically.

i have been working on lastly couple days , starting bang head.. please give me advice :).

i have been using illustration atmosphere websocket chat websockethandleradapter setup , jersey atmosphere servlet instanciate servlets in jetty.

many thanks!

bruno gagnon-adam

here code instanciate server / servlets. :

public server create() throws exception { logger.info("creating http server"); server server = new server(); server.setstopatshutdown(true); // configure http selectchannelconnector httpconnector = new selectchannelconnector(); httpconnector.setport(config.gethttpport()); server.setconnectors(new connector[] { httpconnector }); handlers = new handlercollection(); handlers.setserver(server); handlers.addhandler(createlogginghandler()); handlers.addhandler(createfilehandler()); handlers.addhandler(createjerseyrestservlethandler()); server.sethandler(handlers); homecoming server; } private servletcontexthandler createjerseyrestservlethandler() { servletholder atmosphereholder = initatmosphereservletholder(); servletholder jerseyholder = initjerseyservletholder(); // atmosphere atmosphereholder.setinitparameter("org.atmosphere.usewebsocket", "true"); atmosphereholder.setinitparameter("websocketprotocol", "chatatmospherehandler"); atmosphereholder.setasyncsupported(true); filterholder filterholder = new filterholder(crossoriginfilter.class); filterholder.setinitparameter("allowedorigins", "*"); filterholder.setinitparameter("allowedmethods", "get, post"); servletcontexthandler servlethandler = new servletcontexthandler(handlers, "/"); servlethandler.addservlet(atmosphereholder, "/websocket/*"); servlethandler.addservlet(jerseyholder, "/jersey/*"); servlethandler.addfilter(filterholder, "/*", null); homecoming servlethandler; } private servletholder initjerseyservletholder() { ... } private servletholder initatmosphereservletholder() { atmosphereservlet atmosservlet = new atmosphereservlet(); servletholder atmosphere = new servletholder(atmosservlet); homecoming atmosphere; }

handler websocket :

@websockethandlerservice(path = "/websocket", broadcaster = simplebroadcaster.class) public class chatatmospherehandler extends websockethandleradapter { private final objectmapper mapper = new objectmapper(); @override public void onopen(websocket websocket) throws ioexception { system.out.println("on open"); websocket.resource().setbroadcaster(broadcasterfactory.getdefault().lookup("/websocket", true)); } public void ontextmessage(websocket websocket, string message) throws ioexception { system.out.println("on message"); atmosphereresource r = websocket.resource(); broadcaster b = r.getbroadcaster(); b.broadcast(mapper.writevalueasstring(mapper.readvalue(message, data.class))); } public final static class info { private string message; private string author; private long time; public data() { this("", ""); } public data(string author, string message) { this.author = author; this.message = message; this.time = new date().gettime(); } public string getmessage() { homecoming message; } public string getauthor() { homecoming author; } public void setauthor(string author) { this.author = author; } public void setmessage(string message) { this.message = message; } public long gettime() { homecoming time; } public void settime(long time) { this.time = time; } } }

and pom.xml

<dependency> <groupid>org.eclipse.jetty</groupid> <artifactid>jetty-servlets</artifactid> <version>7.6.4.v20120524</version> </dependency> <dependency> <groupid>org.eclipse.jetty</groupid> <artifactid>jetty-websocket</artifactid> <version>7.6.4.v20120524</version> </dependency> <dependency> <groupid>eu.infomas</groupid> <artifactid>annotation-detector</artifactid> <version>3.0.0</version> </dependency> <dependency> <groupid>org.codehaus.jackson</groupid> <artifactid>jackson-mapper-asl</artifactid> <version>1.9.3</version> </dependency> <dependency> <groupid>org.atmosphere</groupid> <artifactid>atmosphere-annotations</artifactid> <version>1.1.0.beta3</version> </dependency> <dependency> <groupid>org.atmosphere</groupid> <artifactid>atmosphere-jersey</artifactid> <version>1.1.0.beta3</version> </dependency> <dependency> <groupid>org.atmosphere</groupid> <artifactid>atmosphere-commons</artifactid> <version>0.6.5</version> </dependency>

salut,

[i'm atmosphere lead]

can paste server's log? also, url should localhost:8080/websocket/ connecting.

second, why defining bailiwick of jersey servlet? don't need atmosphere, define atmosphereservlet.

if can, jump on mailing list more information.

-- jeanfrancois

java websocket jetty embedded-jetty atmosphere

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -