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));