Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

WSDL - Service endpoint location com IP interno

Senhores, publiquei o serviço em produção com wildfly, gerei as classes pelo wsimport e ao consumir é retornado timeout. Ao abrir o wsdl (http://dominio.com.br/servico?wsdl) aparece o ip interno do server web conforme abaixo:

<wsdl:service name="Service">
    <wsdl:port binding="tns:ServiceSoapBinding" name="WSPort">
        <soap:address location="http://172.10.1.18:8080/servico"/>
    </wsdl:port>
</wsdl:service>

Blz, mas já utilizei todos os recursos de busca interna de arquivo e não achei nenhuma referência desse IP interno nas classes gerada pelo wsimport, pelo contrário, todas referências da url estavam com o domínio a cima.

Ao tentar consumir pelo SoapUI, a página de Request gerada, apontava para o IP interno. Como ele permite alterar o endereço, mudei para o domínio e funcionou. Essa é a explicação do timeout.

No entanto, mesmo as minhas classes geradas pelo wsimport não estarem apontando para o IP interno, como é possível ainda retornar o timeout??

Alguém já passou por isso? Suspeito que seja uma configuração no wildfly e/ou apache.

Segue a classe do serviço:

@WebService
@SOAPBinding(style=Style.DOCUMENT,parameterStyle=ParameterStyle.BARE)
public class ServicoWS {

    @WebMethod(operationName = "servico", action="servico")
    public ObjetoRetorno emite(@WebParam(name = "tokenUsuario", header = true) TokenUsuario token, 
            @WebParam(name = "documento") Documento documento) throws AutorizacaoException {

            [...]
    }
}
2 respostas
solução!

Olá,

Tu pode criar um Vhost que redireciona do IP para o o domínio certinho. Além disso, tem uma configuração para rewrite no JBoss. Segue:

https://docs.jboss.org/author/display/JBWS/Published+WSDL+customization

Opa Fagner, obrigado.

O que resolveu mesmo foi a configuração no wildfly.