[Asterisk-java-users] AgiScript with Spring
Brought to you by:
srt
|
From: Daniele R. <dan...@gm...> - 2014-06-16 09:16:07
|
Hi,
I'm redoing my old project using Asterisk Java with some modern frameworks
(like Spring, ect ect).
I'm recreated my AsteriskManager class in this way:
@Component
public class AsteriskManager {
private Logger log = Logger.getLogger(AsteriskManager.class);
private ManagerConnection managerConnection;
private DefaultAsteriskServer asteriskServer;
@Value("${asterisk.host}")
private String host;
@Value("${asterisk.port}")
private int port;
@Value("${asterisk.username}")
private String username;
@Value("${asterisk.password}")
private String password;
@Value("${asterisk.timeout}")
private long asteriskTimeout;
private DefaultAgiServer agiServer;
private static AgiServerThread agiServerThread;
@PostConstruct
public void start() {
log.info("Avvio di AsteriskManager...");
try {
ManagerConnectionFactory factory = new
ManagerConnectionFactory(host, port, username, password);
managerConnection = factory.createManagerConnection();
asteriskServer = new DefaultAsteriskServer(managerConnection);
asteriskServer.initialize();
log.info("Creata connessione al server Asterisk, stato
connessione: " + managerConnection.getState());
log.info("Avvio il server Agi per Asterisk");
agiServer = new DefaultAgiServer();
agiServerThread = new AgiServerThread(agiServer);
agiServerThread.startup();
} catch (Exception e) {
log.error("", e);
}
}
@PreDestroy
public void stop() {
if
(managerConnection.getState().equals(ManagerConnectionState.CONNECTED) ||
managerConnection.getState().equals(ManagerConnectionState.RECONNECTING)) {
// Il logoff può avvenire sono negli stati CONNECTED or
RECONNECTING
managerConnection.logoff();
}
asteriskServer.shutdown();
}
...
...
...
This works very fine and I'm very satisfied of this. I'm trying to convert
also some simple agiscript classes but I can't figure out how I can manage
these classes with Spring.
In fact, I'd like to do somthing like this:
public class TrunkVoip extends BaseAgiScript {
private static Logger log = Logger.getLogger(TrunkVoip.class);
@Inject
RicaricaTelefonicaServiceImpl ricaricaTelefonicaServiceImpl;
@Inject
TelefonataServiceImpl telefonataServiceImpl;
@Inject
ClienteServiceImpl clienteCustomRepositoryImpl;
public void service(AgiRequest request, AgiChannel channel) throws
AgiException {
ricaricaTelefonicaServiceImpl.doSomething();
....
.....
I need to use some component (@Service or @Component) into this class using
@Inject annotation, but for do this I should manage the class with Spring
adding @Component annotation.
I fear that this is not compatible with the standard way in which AgiServer
expect to manage this kind of classes.
Someone has yet done something similar?
Thanks very much
--
Daniele
|