I had the same problem, the following code is running well for me.
import java.util.Timer;
import java.util.TimerTask;
import org.jivesoftware.smack.ConnectionListener;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.FromContainsFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
/**
*/
public class Connector extends TimerTask{
private boolean connected=false;
private boolean connecting=false;
private XMPPConnection con;
public void run(){
if(!connected&!connecting)
connect();
}
public Connector() {
connect();
new Timer().schedule(this,0,15000);
}
private void connect(){
if(con!=null)
con.close();
connecting=true;
try {
con=new XMPPConnection(“jabber.org”);
con.login(“elie_fusion”,“123456”);
connected=true;
con.addConnectionListener(new ConnectionListener(){
public void connectionClosed() {
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
connecting=false;
connected=false;
}
public void connectionClosedOnError(Exception exception) {
try {
Thread.sleep(10000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
connecting=false;
connected=false;
}
});
con.addPacketListener(new PacketListener(){
public void processPacket(Packet packet) {
if(packet instanceof Message){
Message msg=(Message)packet;
String cmd=msg.getBody();
System.out.println(cmd);
if(cmd.equals(“webcam”)){
util.Controller.uploadWebcamImage();
String to=msg.getTo();
msg.setTo(msg.getFrom());
msg.setFrom(to);
con.sendPacket(msg);
}
}
}
},new FromContainsFilter(""));
} catch (XMPPException ex) {
connecting=false;
ex.printStackTrace();
}
connecting=false;
}
public static void main(String[] args) {
new Connector();
}