Asterisk-Java AGI.DefaultAgiServer зависает при запуске метода запуска - PullRequest
0 голосов
/ 21 мая 2018

Попытка использовать agi для прослушивания звездочки.

Но после запуска метода запуска мое приложение зависает.Ошибка не появляется ...

Мой источник 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.

1 Ответ

0 голосов
/ 25 мая 2018

Tomcat зависает при запуске, поскольку сервер AGI блокирует его и ожидает поступления данных AGI из сокетного соединения ссылка .Чтобы решить эту проблему, вы должны обернуть ваш AgiServer в отдельный поток, чтобы он работал в фоновом режиме, или использовать AgiServerThread .

В результате моя конфигурация 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();
}
...