Я хочу добавить в свое приложение JSF дополнительный функционал для отправки сообщений чату пользователям моей компании. Для разработки этого проекта я использую NetBeans v7.1, GlassFish v3.1.1 и Smack API 3.2.2. В моем веб-приложении я создал CDI ApplicationScoped bean для управления соединением XMPP.Интеграция JSF и XMPP
@Named("xmpp")
@ApplicationScoped
public class XMPPBean implements Serializable {
private org.apache.log4j.Logger loggerErr = org.apache.log4j.Logger.getLogger("err");
private XMPPConnection connection = null;
private String chatHostName = "localhost";
private int chatport = 5222;
private String userName = "testuser";
private String userPass = "12345678";
public void connect(){
ConnectionConfiguration config = new ConnectionConfiguration(chatHostName, chatport);
connection = new XMPPConnection(config);
try {
connection.connect();
connection.login(userName, userPass);
} catch (XMPPException e) {
loggerErr.error(e.getMessage(), e);
}
}
public void sendMessage(){
ChatManager chatmanager = connection.getChatManager();
Chat newChat = chatmanager.createChat("[email protected]", new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: " + " "+message.toXML());
}
});
try {
newChat.sendMessage("Howdy!");
} catch (XMPPException e) {
System.out.println("Error Delivering block");
}
}
public void disconnect() {
connection.disconnect();
}
public boolean chackConnection(){
return connection==null?false:connection.isConnected();
}
public String getLoggedinUser() {
if (connection == null)
return "";
return connection.getUser();
}
}
Все работает нормально. Я могу подключиться к серверу XMPP, отправлять и получать сообщения. Но в моем журнале сервера я периодически вижу исключение:
SEVERE: java.lang.NullPointerException
at org.xmlpull.mxp1.MXParser.isNameStartChar(MXParser.java:3157)
at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1253)
at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:325)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
SEVERE: at org.xmlpull.mxp1.MXParser.isNameStartChar(MXParser.java:3157)
SEVERE: at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1253)
SEVERE: at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)
SEVERE: at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:325)
SEVERE: at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)
SEVERE: at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
SEVERE: java.lang.NullPointerException
at org.jivesoftware.smackx.commands.AdHocCommandManager$4.connectionClosedOnError(AdHocCommandManager.java:268)
at org.jivesoftware.smack.PacketReader.notifyConnectionError(PacketReader.java:172)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:332)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
SEVERE: at org.jivesoftware.smackx.commands.AdHocCommandManager$4.connectionClosedOnError(AdHocCommandManager.java:268)
SEVERE: at org.jivesoftware.smack.PacketReader.notifyConnectionError(PacketReader.java:172)
SEVERE: at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:332)
SEVERE: at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)
SEVERE: at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
Это исключения появляются после вызова функции XMPP или периодически с 10-15 секундным интервалом. Какова эта ошибка и как ее исправить?