[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 |