首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星号-爪哇AGI。启动方法运行时的DefaultAgiServer freez

星号-爪哇AGI。启动方法运行时的DefaultAgiServer freez
EN

Stack Overflow用户
提问于 2018-05-21 11:38:28
回答 1查看 518关注 0票数 2

试着用阿吉听星号。

但是在启动方法运行之后,我的应用程序就冻结了。没有出现错误..。

我的春豆:

代码语言:javascript
复制
@Bean(name = "agi")
public DefaultAgiServer getAsteriskAgi() throws Exception {
    DefaultAgiServer agiServer = new DefaultAgiServer();
    agiServer.startup();
    return agiServer;
}

我的地图

代码语言:javascript
复制
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();

}

}

我的属性文件

代码语言:javascript
复制
fastagi-mapping.properties 

位于“资源”文件夹中

为什么会发生这种情况?

UPD最后两个控制台输出:

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 07:14:12

Tomcat在启动时挂起,因为AGI服务器阻塞了它,并等待来自套接字连接链接的传入AGI数据。要解决这个问题,您应该将AgiServer封装在一个单独的线程中,以便它在后台运行或使用AgiServerThread

因此,我的星号agi配置如下:

代码语言:javascript
复制
@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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50448048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档