2010-09-09 7 views
18

Ich habe einen minimalen Webdienst erstellt und ihn mit javax.xml.ws.Endpoint veröffentlicht. Wenn ich versuche, die WSDL bei http://localhost:1234/AddService?wsdl zu bekommen, funktioniert es gut.Veröffentlichen eines WS mit Jax-WS-Endpunkt

Versucht es bei http://192.168.0.133:1234/AddService?wsdl zu erhalten, erhalte ich nichts. Diese Adresse ist identisch mit localhost.

Gibt es eine Möglichkeit, einen Webservice ohne Angabe der Adresse zu veröffentlichen?

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

Ändern Sie den Code zu

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

wird mir die wsdl auf die IP-Adresse, aber nicht auf localhost.

Gibt es keine Möglichkeit, nur den Port zu definieren?

Antwort

32

Können Sie versuchen, es auf 0.0.0.0 zu veröffentlichen?

+2

Das funktioniert. localhost, 0.0.0.0 und 192.168.0.133 bringt mir die WSDL. Aber warum nicht, während auf localhost oder der anderen IP veröffentlichen. – daniel

+3

Freut mich zu hören, dass es funktioniert. localhost ist IP 127.0.0.1 und Endpoint.publish (offensichtlich) bindet nur an die angegebene Adresse. Mit 0.0.0.0 sagen Sie ihm, dass er eingehende Verbindungen zu jeder IP-Adresse (die mit Ihrem Computer verbunden ist) "hört". Es kann eine praktische Funktion sein, nur an eine bestimmte IP-Adresse zu binden, z.B. Wenn Sie möchten, dass Ihr Dienst nur für ein bestimmtes Subnetz verfügbar ist ... – ivy

+0

Toller Trick. Ist das offiziell unterstützt oder nur ein praktischer Nebeneffekt? –