2010-09-09 25 views
18

Creé un servicio web mínimo y lo publiqué usando javax.xml.ws.Endpoint. Si trato de obtener el WSDL en http://localhost:1234/AddService?wsdl, funciona bien.Publicar un WS con Jax-WS Endpoint

Intentando recibirlo en http://192.168.0.133:1234/AddService?wsdl, no recibo nada. Esta dirección es la misma que localhost.

¿Existe la posibilidad de publicar un servicio web sin proporcionar la dirección?

package test; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 
import javax.xml.ws.Endpoint; 

@WebService 
public class AddService { 

    @WebMethod 
    public int add(int a, int b){ 
     return a+b; 
    } 

    public static void main(String[] args){ 
     Endpoint.publish("http://localhost:1234/AddService", new AddService()); 
    } 
} 

Cambiar el código para

Endpoint.publish("http://192.168.0.133:1234/AddService", new AddService()); 

me consigue el WSDL en la dirección IP, pero no en el servidor local.

¿No hay posibilidad de definir el puerto?

Respuesta

32

¿Podría intentar publicarlo en 0.0.0.0?

+2

Esto funciona. localhost, 0.0.0.0 y 192.168.0.133 me da el wsdl. Pero por qué no lo hace, mientras se publica en localhost o en la otra ip. – daniel

+3

feliz de escuchar que funciona. localhost es ip 127.0.0.1 y Endpoint.publish (obviamente) solo se une a la dirección proporcionada. Con 0.0.0.0 le dices que 'escuche' las conexiones entrantes a cualquier dirección IP (asociada a tu computadora). Puede ser una característica práctica para enlazar solo a una dirección IP específica, p. si desea que su servicio esté disponible solo para una subred determinada ... – ivy

+0

Gran truco. ¿Esto es oficialmente compatible o solo un práctico efecto secundario? –

Cuestiones relacionadas