Я занимаюсь созданием веб-службы, которая будет получать запросы на отправку сообщений через XMPP. Однако все сообщения будут отправляться с одной учетной записи (сервер регистрируется и отправляет уведомления пользователям).Как обеспечить создание только одного XMPPConnection? Использовать синглтоны?
В этом заключается проблема - как ее реализовать? Я пытался реализовать класс XMPPConnection как синглтон, но я застрял в передаче аргументов конструкторам, содержащих имя хоста, порт, JID и т.д.
Как я уже читал here, одноэлементно с параметрами не одноэлементно ... Таким образом, я думал о решении его следующим образом (это какой-то завод?):
public class XMPPConnectionSingleton
{
private volatile static XMPPConnectionSingleton anInstance;
private volatile static XMPPConnection connection;
public static XMPPConnectionSingleton getInstance() {
if(anInstance == null) {
synchronized (XMPPConnectionSingleton.class) {
if(anInstance == null)
anInstance = new XMPPConnectionSingleton();
}
}
return anInstance;
}
public void init(String server, int port, String jid, String password, String resource)
{
ConnectionConfiguration conf = new ConnectionConfiguration(server, port);
connection = new XMPPConnection(conf);
// logging in, etc.
}
}
это хороший способ пойти? Или, может быть, лучше сделать класс упаковки для XMPPConnection, приняв конструктор без параметров?
Ключевой вопрос заключается в том, как ваш веб-сервис будет работать, вы ожидаете одновременного вызова? И если это так, разрешает ли сервер XMPP одновременное подключение нескольких подключенных клиентов? – ThomasRS
Одновременные вызовы могут возникать, так как веб-служба будет использоваться в средах разных размеров. Что вы подразумеваете под несколькими подключенными клиентами одновременно? Сервер XMPP должен принимать только одно соединение с WS-сервера. –
Да, в соответствии с другими вопросами [здесь] (http://stackoverflow.com/search?q=XMPP+multiple+clients+), может показаться, что одновременно возможно несколько клиентов. Если не слишком много накладных расходов, вы можете подумать об этом. – ThomasRS