bayeux - CometD Issues with Publishing Data -



bayeux - CometD Issues with Publishing Data -

i'm new cometd , having problems publishing info on channel. i'm getting next error not invoking handshake() on channel:

sender : null sender : l:/abc/1? exception in thread "thread-9" java.lang.illegalstateexception: method handshake() not invoked local session l:/abc/1? @ org.cometd.server.localsessionimpl.getid(localsessionimpl.java:161) @ org.cometd.server.serverchannelimpl.publish(serverchannelimpl.java:309) @ packagename.cometdsender.senddata(cometdsender.java:64) @ packagename.processorimp.processdata(processorimp.java:18) @ packagename.testsource.processnewdata(testsource.java:50) @ packagename.testsource.run(testsource.java:36) @ java.lang.thread.run(unknown source)

but when include sender.handshake() next exception

sender : null sender : l:/abc/1? exception in thread "thread-9" java.lang.nullpointerexception @ org.cometd.server.bayeuxserverimpl.freeze(bayeuxserverimpl.java:868) @ org.cometd.server.bayeuxserverimpl.dopublish(bayeuxserverimpl.java:823) @ org.cometd.server.bayeuxserverimpl.handle(bayeuxserverimpl.java:649) @ org.cometd.server.localsessionimpl.dosend(localsessionimpl.java:214) @ org.cometd.server.localsessionimpl.handshake(localsessionimpl.java:125) @ org.cometd.server.localsessionimpl.handshake(localsessionimpl.java:110) @ packagename.cometdsender.senddata(cometdsender.java:62) @ packagename.processorimp.processdata(processorimp.java:18) @ packagename.testsource.processnewdata(testsource.java:50) @ packagename.testsource.run(testsource.java:36) @ java.lang.thread.run(unknown source)

i've included class below. can tell me if i'm missing something:

@service

public class cometdsender implements sender {

@inject private bayeuxserver bayeuxserver; @session private localsession sender; private string channelname = null; // setup cometd channel public cometdsender() { this.channelname = "/abc/1"; system.out.println("bayeuxserver : " + (bayeuxserver == null ? "is null" : "is not null")); if (bayeuxserver == null) { bayeuxserver = new bayeuxserverimpl(); } bayeuxserver.createifabsent(channelname, new configurableserverchannel.initializer() { public void configurechannel(configurableserverchannel channelname) { system.out.println("channel : " + (channelname == null ? "is null" : "is not null")); channelname.setpersistent(true); channelname.setlazy(true); } }); } public void senddata(agent data) { // convert update business object cometd-friendly format map<string, object> cometdata = new hashmap<string, object>(4); cometdata.put("id", data.getid()); // publish subscribers serverchannel channel = bayeuxserver.getchannel(channelname); system.out.println("sender : " + sender); if (sender == null) { sender = bayeuxserver.newlocalsession(channelname); system.out.println("sender : " + sender); sender.handshake(); } channel.publish(sender, cometdata, null); }

}

you must not create bayeuxserverimpl instances unless know you're doing, , same applies localsession. since using cometd services, fields must non-null , must not create them yourself. null, , due fact have misconfiguration in web.xml (which did not post).

please read documentation cometd services , follow tutorials: guide step step in solving problems cometd services.

cometd bayeux

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 -