Реализация конечной точки диаметра s6a с помощью RestComm Jdiameter

Я довольно новичок в Diameter, и мне нужно тестовое приложение для имитации поведения HSS и отправки некоторых запросов диаметра в MME на интерфейсе s6a.

Я проверил инструмент чайки, но у него есть некоторые проблемы, поскольку чайка предполагает, что клиент всегда инициирует запрос. Но в моем случае есть ограничение, что MME всегда инициирует запрос CER.

Я искал альтернативы и наткнулся на RestComm JDiameter, но понятия не имею, как его использовать. Репозиторий github не предоставляет никакой информации о его использовании, и я также не смог найти никакой информации, погуглив.

Пожалуйста, расскажите мне, как использовать Jdiameter для моего приложения.


person tej    schedule 15.01.2016    source источник


Ответы (1)


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

CER и CEA являются стандартными диаметрами и будут готовы к работе с JDiameter. Итак, что вам в основном нужно сделать, это:

  • Настройте свой проект и выберите сервер для него. Я выбрал wildfly, но мне пришлось предоставить ему доступ к некоторым другим защищенным внутренним классам Java (требуется только для SCTP). Во-вторых, я сомневаюсь, что обработка внутренних потоков JDiameter действительно соответствует стандарту JEE, но, по крайней мере, она работает.

  • включить JDiameter в качестве библиотеки. В терминах maven это выглядит так:

    <dependency>
        <groupId>org.mobicents.diameter</groupId>
        <artifactId>jdiameter-api</artifactId>
        <version>1.7.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.mobicents.diameter</groupId>
        <artifactId>jdiameter-impl</artifactId>
        <version>1.7.0-SNAPSHOT</version>
        <exclusions>
            <exclusion> 
                <groupId>org.mobicents.protocols.sctp</groupId>
                <artifactId>sctp-impl</artifactId>
            </exclusion>
        </exclusions> 
    </dependency>        
    <dependency>
        <groupId>org.mobicents.diameter</groupId>
        <artifactId>mobicents-diameter-mux-jar</artifactId>
        <version>1.7.0-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
    
  • Создайте рабочий файл jdiameter-something.xml для конфигурации. Вы можете разместить его в каталоге ресурсов или вне вашего приложения, но он должен быть доступен.

  • Если ваше приложение будет работать на сервере приложений, а не автономно, создайте класс java, экземпляр которого будет создаваться при запуске, и инициализируйте там стек JDiameter. Инициализация состоит из чтения конфигурации xml с использованием, например.

    стек = новый StackImpl(); Конфигурация serverConfig = new org.jdiameter.server.impl.helpers.XMLConfiguration(serverConfigInputStream); factory = stack.init(serverConfig);

После этого зарегистрируйте NetWorkReqListeners для своих пользовательских сообщений, а также:

 stack.start();
 ISessionFactory isf = (ISessionFactory) factory;
 isf.registerAppFacory(ServerS6aSession.class, new S6aSessionFactory(1000, factory));
person mbauer    schedule 15.01.2016
comment
Забыл упомянуть: в конфигурации jdiameter.xml вы укажете, должно ли ваше приложение инициировать соединение или оно должно просто ждать входящих соединений. - person mbauer; 15.01.2016
comment
Но в Maven я вижу банки jdiamter-api, jdiameter-impl в нескольких группах org.mobicents.diameter и org.mobicents.servers.diameter . В чем разница между банками этих двух? - person tej; 21.01.2016
comment
Могу ли я использовать Jdiameter для создания автономного приложения s6a без сервера Jboss? S6aSessionFactory, ServerS6aSession взяты из библиотеки jboss mobicents slee (я не знаю, что это за библиотека slee). - person tej; 21.01.2016
comment
Да, вы также можете создать отдельное приложение с JDiameter, однако тогда вам также придется сосредоточиться на управлении ресурсами, базе данных, кэшировании и т. д. -api определяет интерфейсы, а -impl обеспечивает конкретные реализации. Это происходит из принципов проектирования, используемых в мире JEE. Mobicents — это, насколько мне известно, целая структура на основе JBoss с рабочими реализациями для множества сетевых компонентов. Он содержит повторно реализованные версии JDiameter, которые несовместимы с автономными старыми библиотеками JDiameter. - person mbauer; 22.01.2016
comment
Извиняюсь за неясность. В чем разница между org.mobicents.diameter jdiameter-api.jar и org.mobicents.servers.diameter jdiameter-api.jar? Есть банки с одинаковым названием в двух разных группах. - person tej; 25.01.2016
comment
JDiameter — это оригинальная реализация, предназначенная для автономной работы. Mobicents, с другой стороны, является частью всего стека mobicents. Он значительно доработан, но (скорее всего) будет работать только вместе с остальными мобицентами. Кроме того, последняя версия стека mobicents, которую я видел, все еще работала на довольно старой версии JBoss и не работала на wildlfy. - person mbauer; 26.01.2016
comment
Большой. Теперь я понимаю. Я столкнулся с другой проблемой. Я разместил это как еще один вопрос здесь. Сталкивались ли вы с такой проблемой раньше? stackoverflow.com/questions/35033222/ - person tej; 27.01.2016
comment
Есть ли способ проверить, установлен ли CER перед отправкой других сообщений на сервер. В примерах, приведенных на jdiameter github, клиент просто ждет около 10 секунд, прежде чем отправлять какие-либо запросы. - person tej; 18.03.2016