Хорошие Библиотеки Java XMPP для стороны сервера? [закрытый]

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

61
задан Bill the Lizard 4 May 2012 в 12:49
поделиться

6 ответов

http://xmpp.org/xmpp-software/libraries/ имеет список библиотек программного обеспечения для XMPP. Вот устаревший снимок его:

крикун ActionScript

C

C++

C#/.NET / Моно

Потоковые объекты бессмысленных данных (JSO) Erlang

Flash

Haskell

Java

статья-xmpp JavaScript

Lisp

Objective C

Perl

Ruby

Tcl

51
ответ дан anAgent 24 November 2019 в 17:23
поделиться

Ваш лучший выбор состоит в том, чтобы использовать существующий сервер и добавить Вашу функциональность к ней. Запись всего сервера с нуля, даже пользование библиотекой, будут партия тяжелее, чем Вы ожидаете.

можно ли сказать нам больше о проблеме, которую Вы пытаетесь решить? Мы можем тогда указать на Вас на соответствующий сервер и помочь Вам с правильным местом включить.

2
ответ дан Joe Hildebrand 24 November 2019 в 17:23
поделиться

Ignite Realtime использует свой Tinder API , который является основным строительным блоком, извлеченным из OpenFire только для создания серверных компонентов и, возможно, других серверов. Он реализует базовые строительные блоки XMPP, и вы можете начать с него.

4
ответ дан 24 November 2019 в 17:23
поделиться

Также от Ignite Realtime есть Whack API , который специально предназначен для создания компонентов XMPP.

Whack - это XMPP с открытым исходным кодом (Jabber) библиотека компонентов для компонентов XMPP. Чистая библиотека Java, это может быть встроены в ваши приложения, чтобы создать что-нибудь из полного XMPP компонент для простой интеграции XMPP например, отправка перехвата и действует на определенные сообщения.

3
ответ дан 24 November 2019 в 17:23
поделиться

Я прошел тот же поиск. Сначала я попробовал Smack, а потом понял, что он нацелен на c2s (клиент-сервер) и не получил того, что мне нужно.Я посмотрел на Tinder, но мне не понравилась модель лицензирования (к тому же, когда я посмотрел, она была намного более сырой). Я наконец посмотрел на Whack и понял, что это было то, что мне нужно, но в нем многого не хватает (думаю, именно поэтому появился Tinder).

Итак .. мое решение? Разветвленный Whack, добавил код для абстрагирования вещей и попытался упростить его использование: http://github.com/Communitivity/Adirondack

Я написал библиотеку Scala на основе этого, чтобы помочь создать внешний компонент на основе агентов, см. http://github.com/Communitivity/Shellack и http://github.com/Communitivity/MinimalScalaXMPPComponent

One из моих основных целей было упростить написание компонента быстро. Пример такого компонента приведен ниже:

object Main {

/**
* @param args the command line arguments
*/
  def main(args: Array[String]) :Unit = {
      new XMPPComponent(
        new ComponentConfig() {
            def secret() : String = { "secret.goes.here" }
            def server() : String = { "communitivity.com" }
            def subdomain() : String = { "weather" }
            def name() : String = { "US Weather" }
            def description() : String = { "Weather component that also supported SPARQL/XMPP" }
        },
       actor {
        loop {
            react {
                case (pkt:Packet, out : Actor) =>
                    Console.println("Received packet...\n"+pkt.toXML)
                    pkt match {
                        case message:Message =>
                            val reply = new Message()
                            reply.setTo(message.getFrom())
                            reply.setFrom(message.getTo())
                            reply.setType(message.getType())
                            reply.setThread(message.getThread())
                            reply.setBody("Received '"+message.getBody()+"', tyvm")
                            out ! reply
                        case _ =>
                            Console.println("Received something other than Message")
                    }
                 case _ =>
                    Console.println("Received something other than (Packet, actor)")
            }
        }
       }
    ).start
  }
}
8
ответ дан 24 November 2019 в 17:23
поделиться

проверьте это:

это библиотека нижнего уровня. он находится в стадии инкубации, и кажется, что никто не настаивает на этом. но это отличный API, и я надеюсь, что он будет прогрессировать.

http://java.net/project/jso-jabber-stream-objects

1
ответ дан 24 November 2019 в 17:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: