2010-09-09 10 views
18

Ho creato un servizio Web minimale e lo ho pubblicato utilizzando javax.xml.ws.Endpoint. Se provo a ottenere il WSDL allo http://localhost:1234/AddService?wsdl, funziona correttamente.Pubblicazione di un WS con Jax-WS Endpoint

Cercando di riceverlo a http://192.168.0.133:1234/AddService?wsdl, non ricevo nulla. Questo indirizzo è lo stesso di localhost.

Esiste la possibilità di pubblicare un servizio Web senza fornire l'indirizzo?

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

Modifica del codice a

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

mi viene il WSDL sull'indirizzo IP, ma non su localhost.

Non c'è la possibilità di definire solo la porta?

risposta

32

Provare a pubblicarlo su 0.0.0.0?

+2

Questo funziona. localhost, 0.0.0.0 e 192.168.0.133 mi danno il wsdl. Ma perché no, durante la pubblicazione su localhost o l'altro ip. – daniel

+3

Felice di sentirlo funzionare. localhost è ip 127.0.0.1 e Endpoint.publish (ovviamente) si collega solo all'indirizzo fornito. Con 0.0.0.0 si dice di "ascoltare" le connessioni in entrata su qualsiasi indirizzo IP (associato al proprio computer). Può essere una comoda caratteristica associare solo a uno specifico indirizzo IP, ad es. se vuoi che il tuo servizio sia disponibile solo per una determinata sottorete ... – ivy

+0

Grande trucco. Questo è ufficialmente supportato o solo un utile effetto collaterale? –

Problemi correlati