0

我正在使用 Asterisk-Java 来收听来自 Asterisk PBX 的消息。这个应用程序以前可以工作,但我做了一些更改,现在当我尝试运行它并从我的桌面电话进行测试电话会议时,它说:

Asterisk-Java ManagerConnection-0-Reader-2 2012-06-06 17:17:46,858 DEBUG [manager.internal.ManagerConnectionImpl] - Dispatching event:
org.asteriskjava.manager.event.MeetMeJoinEvent[dateReceived='Wed Jun 06 17:17:46 BST 2012',privilege='call,all',sequencenumber=null,meetme='1',calleridname=null,timesta
mp=null,uniqueid='1338999461.46707',server=null,calleridnum=null,channel='SIP/10.252.26.15-08b76ab0',usernum='1',systemHashcode=233612073]
Asterisk-Java ManagerConnection-0-Reader-2 2012-06-06 17:17:46,869 DEBUG [manager.internal.ManagerConnectionImpl] - Dispatching event:
org.asteriskjava.manager.event.DisconnectEvent[dateReceived='Wed Jun 06 17:17:46 BST 2012',timestamp=null,sequencenumber=null,server=null,systemHashcode=681515782]
Asterisk-Java ManagerConnection-0-Reader-2 2012-06-06 17:17:46,870 INFO  [manager.internal.ManagerConnectionImpl] - Closing socket.

可以看到DisconnectEvent后面直接有received MeetMeJoinEvent。每次都会发生这种情况 - 它总是在MeetMeJoinEvent. 这DisconnectEvent是一个伪事件,意味着 Asterisk 与我的应用程序断开连接 - 它没有与呼叫者断开连接。

随后,Asterisk-Java 会立即自动重新连接,但如果我再次进行测试调用,它会以同样的方式再次发生。我尝试重新启动 Glassfish 应用程序服务器。

我认为我的任何更改都不应该导致这种情况,并且只有一行代码在 Asterisk 连接上调用断开连接(当 Web 应用程序关闭时),并且与该行对应的日志消息不会出现在日志。

这可能是什么原因造成的?

4

1 回答 1

1

实际上并不是 Asterisk 与应用程序断开连接——而是应用程序与 Asterisk 断开连接。

这是因为 Asterisk-Java 有一个错误:它在事件处理程序中捕获异常,而不是错误。然后它假设如果 Asterisk 得到一个未捕获的 Throwable,则它必须断开连接。

我在 Glassfish 主日志文件中找到了未捕获的异常堆栈跟踪。

于 2012-06-07T11:16:33.427 回答