星号-Java AGI。 DefaultAgiServer 在启动方法为 运行 时冻结
Asterisk-Java AGI. DefaultAgiServer freez while startup method is running
正在尝试使用 agi 来收听 asterisk。
但是在启动方法为 运行 之后,我的应用程序冻结了。没有出现错误...
我的 spring bean:
@Bean(name = "agi")
public DefaultAgiServer getAsteriskAgi() throws Exception {
DefaultAgiServer agiServer = new DefaultAgiServer();
agiServer.startup();
return agiServer;
}
我的映射
public class AsteriskAgi extends BaseAgiScript{
@Override
public void service(AgiRequest agiRequest, AgiChannel agiChannel) throws AgiException {
// Answer the channel...
answer();
// ...say hello...
streamFile("welcome");
streamFile("tt-monkeys");
// ...and hangup.
hangup();
}
}
我的属性文件
fastagi-mapping.properties
位于资源文件夹中
为什么会这样?
UPD
最后两个控制台输出:
2018-05-21 15:19:53 DEBUG DefaultAgiServer:81 - Using channelFactory org.asteriskjava.fastagi.internal.DefaultAgiChannelFactory
2018-05-21 15:19:53 INFO DefaultAgiServer:315 - Listening on *:4573.
Tomcat 启动时挂起,因为 AGI 服务器正在阻止它并等待来自套接字连接 link 的传入 AGI 数据。
要解决这个问题,您应该将 AgiServer 包装在一个单独的线程中,以便它在后台运行或使用 AgiServerThread.
结果我的 asterisk agi 配置如下所示:
@Bean
public AgiServerThread agiServerThread(){
AgiServerThread agiServerThread = new AgiServerThread(getDefaultAgiServer());
agiServerThread.startup();
return agiServerThread;
}
@Bean
public DefaultAgiServer getDefaultAgiServer(){
return new DefaultAgiServer(getAsteriskAgiScript());
}
@Bean
public AgiScript getAsteriskAgiScript(){
return new AsteriskAgi();
}
正在尝试使用 agi 来收听 asterisk。
但是在启动方法为 运行 之后,我的应用程序冻结了。没有出现错误...
我的 spring bean:
@Bean(name = "agi")
public DefaultAgiServer getAsteriskAgi() throws Exception {
DefaultAgiServer agiServer = new DefaultAgiServer();
agiServer.startup();
return agiServer;
}
我的映射
public class AsteriskAgi extends BaseAgiScript{
@Override
public void service(AgiRequest agiRequest, AgiChannel agiChannel) throws AgiException {
// Answer the channel...
answer();
// ...say hello...
streamFile("welcome");
streamFile("tt-monkeys");
// ...and hangup.
hangup();
}
}
我的属性文件
fastagi-mapping.properties
位于资源文件夹中
为什么会这样?
UPD 最后两个控制台输出:
2018-05-21 15:19:53 DEBUG DefaultAgiServer:81 - Using channelFactory org.asteriskjava.fastagi.internal.DefaultAgiChannelFactory
2018-05-21 15:19:53 INFO DefaultAgiServer:315 - Listening on *:4573.
Tomcat 启动时挂起,因为 AGI 服务器正在阻止它并等待来自套接字连接 link 的传入 AGI 数据。 要解决这个问题,您应该将 AgiServer 包装在一个单独的线程中,以便它在后台运行或使用 AgiServerThread.
结果我的 asterisk agi 配置如下所示:
@Bean
public AgiServerThread agiServerThread(){
AgiServerThread agiServerThread = new AgiServerThread(getDefaultAgiServer());
agiServerThread.startup();
return agiServerThread;
}
@Bean
public DefaultAgiServer getDefaultAgiServer(){
return new DefaultAgiServer(getAsteriskAgiScript());
}
@Bean
public AgiScript getAsteriskAgiScript(){
return new AsteriskAgi();
}