powered by Jive Software

Correct way to run multiple smack clients colocated with openfire server

Hi,

Some background:

In our setup we are running a continous integration server (jenkins). On the same server openfire is running. On jenkins we are running some specific automation processes for which we want to use jabber to send out notfications (e.g. process started, stopped, failed, or task failed, task taking too long etc.). So each jenkins job is running a process consisting of multiple tasks. Each process is publishing events (messages) in a specific jabber chat room. The advantage of this anyone who is interested in seeing the progress can simply join the conference room (typically one person is reponsibile for monitoring at any point in time). Also, a mobile client can be used to moniitor the room and give notifications. So, this is much more convenient than a mail based solution.

The problem:

The jenkins jobs (processes) are running on the same server as openfire. Initially I got th error message: “couldn’t set up local socks5 proxy on port 7777”. But I haven’t been able to reproduce this locally. I have been able to reproduce other errors locally and I am now able to run multiple smack clients on a laptop (also with an openfire server running). However, I am unable to reproduce the problem with the Socks5Proxy. The only message I can reproduce while starting up multiple clients is a NotConnectedException

I am now setting up the multi-user chat as follows:

// 1. statement below added to disable the sock5 proxy

Socks5Proxy.setLocalSocks5ProxyEnabled(false);

XMPPConnection conn = new XMPPTCPConnection(aHost);

conn.connect();

// 2. added a unique resource name to allow multiple connections

conn.login(aUsername, aPassword, UUID.randomUUID().toString());

roomName = aRoom;

room = new MultiUserChat(conn, aRoom);

room.join(“Release Automation”);

Now it appears to be working (at least locally).

My question is now what the correct way is to run multiple smack clients on a server colocated with an openfire server. Is it required to disable the socks5proxy? Also, when is the proxy going to be used? Is it setup directly when starting or only later when a message is received. Also, do I need to do more than pass a unique resource name to the login() method?

Cheers

Erik

Is it required to disable the socks5proxy?
No, but multiiple processes can’t listen on the same port.

Also, when is the proxy going to be used?
It’s used for xep65 socks5 bytestreams (e.g. filetransfers)

Is it setup directly when starting or only later when a message is received.
IIRC the socks5 proxy is started right away

Also, do I need to do more than pass a unique resource name to the login() method?
No. Note that you can also set the resource to ‘null’ and let the server generate a unique resource for you.