Mobicents jDiameter在git上有什么问题

时间:2014-10-10 08:10:24

标签: java jboss openstack radius restcomm

我正在尝试运行我在这里找到的客户端 - 服务器示例=> examples/guide1但它似乎没有按预期工作。

虽然消息似乎到达服务器并且收到了答案,但是从不调用ExampleServer的方法“processRequest”,这意味着永远不会实际处理该消息。正如我所说,在客户端上调用“receivedSuccessMessage”,但它只处理原始消息。

我看到由于服务器日志中的这个日志,服务器收到了消息: “接收消息类型[686]到peer [aaa:// localhost:47269]”

我还注意到有两个StackImpl类可以在“org.jdiameter.server.impl”下找到,而另一个在“org.jdiameter.client.impl”下。然而,客户端使用服务器下的那个看起来很奇怪,并且从快速浏览一下就不一样了。

我也找不到javadocs,我找到的唯一文档是here,但实际上并没有多说。

1 个答案:

答案 0 :(得分:2)

好的,我解决了大部分问题。

首先,jdiameter版本无法通过Maven解决,需要更改(这不是我上面提到的问题,但很高兴知道)。我使用 1.5.6.0.-build501 。还使用Java 1.6(即通过maven-compiler-plugin)来避免丑陋的编译错误。 (构建路径指定Java 1.5,我的机器上有1.6和/或更高版本。)

关于我的第二个问题,StackImpl下的org.jdiameter.server.impl实现org.jdiameter.client.impl下的XMLConfiguration。但是,您不能将其与客户端一起使用(至少在此示例中)。不知道为什么他们这样做。此外,客户端配置使用服务器的org.jdiameter.server.impl.helpers.XMLConfigurationorg.jdiameter.server.impl.helpers,而不是ExampleClient.java下的包 private void sendNextRequest(int enumType) throws InternalException, IllegalDiameterStateException, RouteException, OverloadException { Request r = this.session.createRequest(commandCode, this.authAppId, realmName); AvpSet requestAvps = r.getAvps(); Avp exchangeType = requestAvps.addAvp(exchangeTypeCode, (long) enumType, vendorID, true, false, true); Avp exchengeData = requestAvps.addAvp(exchangeDataCode, TO_SEND[toSendIndex++], vendorID, true, false, false); requestAvps.addAvp(Avp.DESTINATION_HOST, "127.0.0.1", true, false, true); this.session.send(r, this); dumpMessage(r,true); } 。它不能使用客户端包中的那个。

因此,为了使示例能够正常工作,您需要更改serverURI中的代码。具体来说就是以下方法。

createRequest

DEBUG PeerTableImpl - In getPeerByName for peer name [aaa://127.0.0.1:3868]. going to loop through peerTable and find a matching entry DEBUG PeerTableImpl - Checking to see if peer name [aaa://127.0.0.1:3868] matches peertable value of [aaa://127.0.0.1:49150] or [127.0.0.1] DEBUG controller.PeerTableImpl - No peer found in getPeerByName for peer [aaa://127.0.0.1:3868] will return null 应从ExampleClient.java中移除,AVP 293(目的地主机)应与服务器的主机匹配。

我在仔细研究了日志文件并进行了大量调试后发现了这一点。

ExampleServer.java

请注意,缺少' 3'来自DEBUG org.jdiameter.client.impl.parser.MessageImpl - Application Ids in this message are: DEBUG org.jdiameter.client.impl.parser.MessageImpl - [AppId [Vendor-Id:0; Auth-Application-Id:33333; Acct-Application-Id:0]] DEBUG org.jdiameter.client.impl.parser.MessageImpl - Returning [AppId [Vendor-Id:0; Auth-Application-Id:33333; Acct-Application-Id:0]] as the first application id because there are no vendor specific ones found DEBUG org.jdiameter.client.impl.controller.PeerImpl - Could not process request. Result Code = [3007], Error Message: [null] DEBUG org.jdiameter.client.impl.controller.PeerImpl - Sending response indicating we could not process request 和{{1}}的applicationID成员。这似乎不会影响示例,但如果你开始搞乱配置,你可能会面临这样的问题:

{{1}}