2

我对 Diameter 很陌生,我需要一个测试应用程序来模仿 HSS 行为并在 s6a 接口上向 MME 发送一些直径请求。

我已经检查了 seagull 工具,但它存在一些问题,因为 seagull 假设客户端总是发起请求。但在我的例子中,有一个约束是 MME 总是发起 CER 请求。

我正在检查替代方案,我遇到了 RestComm JDiameter,但我不知道如何使用它。github repo 没有提供任何关于使用它的信息,我也无法通过谷歌搜索找到任何信息。

所以请指导我如何在我的应用程序中使用 Jdiameter。

4

1 回答 1

2

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); 工厂 = stack.init(serverConfig);

之后,为您的自定义消息注册 NetWorkReqListeners 以及:

 stack.start();
 ISessionFactory isf = (ISessionFactory) factory;
 isf.registerAppFacory(ServerS6aSession.class, new S6aSessionFactory(1000, factory));
于 2016-01-15T14:15:19.950 回答