2010-09-09 28 views
18

J'ai créé un service Web minimal et l'ai publié à l'aide de javax.xml.ws.Endpoint. Si j'essaye d'obtenir le WSDL au http://localhost:1234/AddService?wsdl cela fonctionne très bien.Publication d'un WS avec Jax-WS Endpoint

En essayant de le recevoir au http://192.168.0.133:1234/AddService?wsdl, je ne reçois rien. Cette adresse est la même que localhost.

Existe-t-il une possibilité de publier un service Web sans fournir l'adresse?

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()); 
    } 
} 

Modification du code à

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

me fait wsdl sur l'adresse IP, mais pas sur localhost.

N'y a-t-il pas une possibilité de définir simplement le port?

Répondre

32

Pourriez-vous essayer de le publier sur 0.0.0.0?

+2

Cela fonctionne. localhost, 0.0.0.0 et 192.168.0.133 me donne le wsdl. Mais pourquoi pas, tout en publiant sur localhost ou l'autre ip. – daniel

+3

Heureux de l'entendre fonctionner. localhost est ip 127.0.0.1, et Endpoint.publish (évidemment) se lie uniquement à l'adresse fournie. Avec 0.0.0.0, vous lui dites d'écouter les connexions entrantes à n'importe quelle adresse IP (associée à votre ordinateur). Il peut s'agir d'une fonctionnalité pratique permettant de se lier uniquement à une adresse IP spécifique, par ex. si vous voulez que votre service ne soit disponible que pour un certain sous-réseau ... – ivy

+0

Astuce. Est-ce officiellement soutenu ou juste un effet secondaire pratique? –