Oi,
Pelo que sei, toda vez que eu fizer um (re)deploy de uma app web com Apache Axis (versão 1.3), eu preciso registrar todos os Web Services nele.
Para resolver isso eu criei um ServletContextListener que registra os WSDD quando o contexto é criado, iniciando uma nova thread, para não dar lock e nem travar o startup do contexto. Ele registra muito bem o WSDD.
O problema é quando este listener tem que registrar mais de um WSDD. Ele registra o primeiro e simplesmenta dá pau com os outros, exibindo a mensagem: "java.net.ConnectException: Connection refused: connect" (faultString). Usando thread ou não.
O código do listener é mais ou menos assim:
//for each WSDD...
for( int i=0; i<wsdd_file.length; i++ ) {
try {
URL urlWsdd = this.getClass().getClassLoader().getResource(wsdd_file[i]);
if( urlWsdd == null ) {
throw new Exception("WSDD "+urlWsdd+" not found!");
}
args[3] = urlWsdd.getFile();
AdminClient adminClient = new AdminClient();
String ret = adminClient.process(args);
} catch (Exception e) {
log.error("ERROR WSDD: "+e.getMessage());
}
}
Pelo que percebi, esse AdminClient deve criar thread internamente, não tenho certeza. Percbi isso empiricamente. Para tentar resolver eu fiz um Thread.sleep() de 10 segundos após cada execução de process(), mas não resolveu.
Alguém tem ideia do problema ou sabe uma solução?
>