¿Cómo conectar el servidor XMPP bosh usando la biblioteca Java Smack?

Tengo un cliente xmpp en la aplicación web usando strophe.js, según mi caso de uso, tengo que cambiar rápidamente a diferentes páginas

El enfoque actual no es seguro ya que jid y la contraseña son visibles en el script java, estaba encontrando soluciones para implementar la seguridad en strophe client e intentando hacer que el tiempo de conexión (con bosh) sea más corto, mientras revisaba el libro "Programación XMPP con JavaScript y jQuery "por jake moffitt me encontré con una solución cuyo elemento de mis dos problemas anteriores es implementar el mecanismo de sesión. Que dice que podemos usar strophe attach (jid, sid, rid) para conectarme a la conexión existente, por lo que necesito SID y RID , que puedo obtener del servidor de aplicaciones !!!

el libro ha dado un ejemplo de conexión automatizada al servidor bosh cuando el usuario inició sesión en la aplicación web, el autor lo implementó usando un proyecto Django en python, ya que estoy usando Java como lenguaje del lado del servidor, traté de implementar el mismo ejemplo usando Java Smcak-4.0 .3 y smack-bosh-4.0.3 pero no puedo conectarme al servidor bosh (estoy usando ejabberd como servidor xmpp)

mi código es el siguiente

 BOSHConfiguration config = new BOSHConfiguration(false,"192.168.0.106",5280,"/http-bind/","192.168.0.106");
                XMPPBOSHConnection xbc=new XMPPBOSHConnection(config); 
                xbc.connect();
                xbc.login("admin", "admin");
                System.out.println(xbc.getConnectionID());

rastro de la pila

java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserFactory
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at org.jivesoftware.smack.SmackConfiguration.processConfigFile(SmackConfiguration.java:352)
    at org.jivesoftware.smack.SmackConfiguration.processConfigFile(SmackConfiguration.java:347)
    at org.jivesoftware.smack.SmackConfiguration.<clinit>(SmackConfiguration.java:155)
    at org.jivesoftware.smack.ConnectionConfiguration.<init>(ConnectionConfiguration.java:67)

Cuando traté de iniciar sesión en el servidor bosh falla cada vez, no estoy seguro de lo que está mal aquí, ¿alguien puede explicarme?

Una cosa más que he encontrado es que se puede obtener el identificador de sesión (SID) usando "xbc.getConnectionID ()", pero ¿cómo encontrar el identificador de solicitud?

¡Cualquier ayuda sobre el problema anterior será apreciable!

¡gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta