Hi Ken, sorry for replying late, too.
We have a (unreleased!) sample PubSub client available in svn at http://svn.apache.org/repos/asf/mina/vysper/trunk/demo/pubsub/client/ which also uses smackx-pubsub. It works for me after applying the patch given below from revision 938927 to the server code. This patch is a workaround only, but all I can give right now to make the pubsub demo client run. Maybe this helps you getting your client to run with Vysper/PubSub. Please note that this kind of discussion should ideally be continued at the [email protected] list. HTH, Bernd Modified: mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java URL: http://svn.apache.org/viewvc/mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java?rev=938927&r1=938926&r2=938927&view=diff ============================================================================== --- mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java (original) +++ mina/vysper/trunk/nbxml/src/main/java/org/apache/vysper/xml/fragment/Renderer.java Wed Apr 28 11:24:22 2010 @@ -70,12 +70,15 @@ public class Renderer { for(Entry<String, String> nsAttr : nsAttrs.entrySet()) { openElementBuffer.append(" "); String name; - if(nsAttr.getKey().length() == 0) { + String value = nsAttr.getValue(); + if(value == null || value.length() == 0) { + continue; // don't issue "xmlns=''", this will only confuse clients + } else if(nsAttr.getKey().length() == 0) { name = "xmlns"; } else { name = "xmlns:" + nsAttr.getKey(); } - renderAttribute(openElementBuffer, name, nsAttr.getValue()); + renderAttribute(openElementBuffer, name, value); } for (Attribute attribute : element.getAttributes()) { On Sat, Jun 5, 2010 at 22:18, Bernd Fondermann <[email protected]> wrote: > Hi! This is my first post to the Mina ML. I am currently evaluating Mina and > Vysper. I am trying to setup the basic XMPP PubSub demo as described here: > > http://www.igniterealtime.org/community/message/196048#196048 > > I'm running Vysper 0.5, and using the Smackx-pubsub-0.6 client library, all on > the same host. Using the users created in ServerMain I am able to connect to > my > local Vysper instance, however when I execute the following line the > connection > is terminated and my client dies: > > Node myNode = manager.createNode("TestNode", form); > > Error message is: > > java.net.SocketException: Connection closed by remote host at > sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1301) at > sun.security.ssl.AppOutputStream.write(AppOutputStream.java:62) at > sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:220) at > sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:290) at > sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:294) at > sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:140) at > java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) at > java.io.BufferedWriter.flush(BufferedWriter.java:253) at > org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:274) > at org.jivesoftware.smack.PacketWriter.access$000(PacketWriter.java:40) > at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:87) > java.io.EOFException: no more data available - expected end tag > </stream:stream> > to close start tag <stream:stream> from line 1, parser stopped on END_TAG seen > ...to="[email protected]/ba1f394ff13848a6879468a34a85b585"></presence>... > @1:934 at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:3035) at > org.xmlpull.mxp1.MXParser.more(MXParser.java:3046) at > org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144) at > org.xmlpull.mxp1.MXParser.next(MXParser.java:1093) at > org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:368) > at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44) > at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76) No > response from server.: at > org.jivesoftware.smackx.packet.SyncPacketSend.getReply(SyncPacketSend.java:50) > at > org.jivesoftware.smackx.packet.SyncPacketSend.getReply(SyncPacketSend.java:61) > at > org.jivesoftware.smackx.pubsub.PubSubManager.sendPubsubPacket(PubSubManager.java:324) > at > org.jivesoftware.smackx.pubsub.PubSubManager.sendPubsubPacket(PubSubManager.java:318) > at > org.jivesoftware.smackx.pubsub.PubSubManager.createNode(PubSubManager.java:134) > at > org.apache.vysper.demo.pubsub.client.PubsubHelloWorld.run(PubsubHelloWorld.java:36) > at > org.apache.vysper.demo.pubsub.client.PubsubHelloWorld.main(PubsubHelloWorld.java:21) > > And Vysper tells me this: > > 14:42:55,966 | INFO | > org.apache.vysper.xmpp.modules.core.im.handler.PresenceAvailabilityHandler | > [email protected]/ba1f394ff13848a6879468a34a85b585 has become > available 14:43:01,202 | DEBUG | > org.apache.vysper.xmpp.protocol.SessionStateHolder | > session state changed to = CLOSED 14:43:01,203 | WARN | > org.apache.mina.filter.logging.LoggingFilter | EXCEPTION : > org.apache.mina.core.write.WriteToClosedSessionException at > org.apache.mina.core.polling.AbstractPollingIoProcessor.clearWriteRequestQueue(AbstractPollingIoProcessor.java:573) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.removeNow(AbstractPollingIoProcessor.java:525) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.removeSessions(AbstractPollingIoProcessor.java:497) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:61) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:974) > at > org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at java.lang.Thread.run(Thread.java:636) 14:43:01,203 | WARN | > org.apache.vysper.mina.XmppIoHandlerAdapter | error caught > on transportation layer: {} > org.apache.mina.core.write.WriteToClosedSessionException at > org.apache.mina.core.polling.AbstractPollingIoProcessor.clearWriteRequestQueue(AbstractPollingIoProcessor.java:573) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.removeNow(AbstractPollingIoProcessor.java:525) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.removeSessions(AbstractPollingIoProcessor.java:497) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:61) > at > org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:974) > at > org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at java.lang.Thread.run(Thread.java:636) 14:43:01,205 | WARN | > org.apache.vysper.mina.codec.StanzaWriterProtocolEncoder | > unhandled StanzaWriterProtocolEncoder.dispose() 14:43:01,206 | WARN | > org.apache.vysper.xmpp.modules.core.base.handler.XMPPCoreStanzaHandler | no > 'from' attribute, and cannot uniquely determine sending resource for > initiating > entity [email protected] in session 17cca8fbfbed4bab9f265fc609019357 > 14:43:01,206 | DEBUG | > org.apache.vysper.xmpp.protocol.SessionStateHolder | > session state changed to = CLOSED > > Here is the whole PubSub Helloworld class adapted from the ignite post: > http://pastebin.com/ui7gHUfg > > I'm less interested in debugging this demo code rather I am trying to get to > get > the basics of XMPP PubSub working with Vysper. Any tips/suggestions/working > solutions would be greatly appreciated . > > thx ken >
