好的,我解决了大部分问题。
首先,jdiameter
版本无法通过 Maven 解决,需要更改(这不是我上面提到的问题,但很高兴知道)。我使用了 1.5.6.0.-build501。还使用 Java 1.6(即通过 maven-compiler-plugin)来避免丑陋的编译错误。(构建路径指定 Java 1.5,我的机器上有 1.6 和/或更高版本)。
关于我的第二个问题,StackImpl
underorg.jdiameter.server.impl
实现了 under org.jdiameter.client.impl
。但是,您不能将其与客户端一起使用(至少在此示例中)。不知道他们为什么这样做。此外,客户端配置使用服务器的XMLConfiguration
包org.jdiameter.server.impl.helpers.XMLConfiguration
而不是org.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
并且 AVP 293 (DESTINATION HOST) 应与服务器的主机匹配。
在仔细研究日志文件并进行大量调试后,我发现了这一点。
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
另请注意, 和 的 applicationID 成员中缺少“3 ExampleClient.java
” ExampleServer.java
。这似乎不会影响示例,但如果您开始搞乱配置,您可能会遇到如下问题:
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