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
Post a Comment