Publishing a WS with Jax-WS Endpoint

35,414

Could you try publishing it on 0.0.0.0?

Share:
35,414
daniel
Author by

daniel

Updated on July 09, 2022

Comments

  • daniel
    daniel almost 2 years

    I built a minimal web service and published it using javax.xml.ws.Endpoint. If I try to get the WSDL at http://localhost:1234/AddService?wsdl it works fine.

    Trying to recieve it at http://192.168.0.133:1234/AddService?wsdl, I don't receive anything. This address is the same as localhost.

    Is there a posibiility to publish a webservice without providing the address?

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

    Changing the code to

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

    gets me the wsdl on the IP address but not on localhost.

    Isn't there a posibility to just define the port?

  • daniel
    daniel almost 14 years
    This works. localhost, 0.0.0.0 and 192.168.0.133 gets me the wsdl. But why doesn't it, while publishing on localhost or the other ip.
  • ivy
    ivy almost 14 years
    Happy to hear it works. localhost is ip 127.0.0.1 , and Endpoint.publish (obviously) only binds to the provided address. With 0.0.0.0 you tell it to 'listen' to incoming connections to any ip-address (associated with your computer). It can be a handy feature to only bind to a specific ip-address, e.g. if you want your service to be only available to a certain subnet...
  • matbrgz
    matbrgz almost 13 years
    Great trick. Is this officially supported or just a handy side-effect?
  • ivy
    ivy almost 13 years
    It's an 'official way', but why it works is a matter of ipv4 specification; check en.wikipedia.org/wiki/IPv4 or questions on stackoverflow on this subject : stackoverflow.com/search?q=0.0.0.0
  • matbrgz
    matbrgz about 12 years
    What would the equivalent be for IPv6?
  • S R Chaitanya
    S R Chaitanya almost 6 years
    I have couple of questions. 1) The publish method of Endpoint, takes a URL to bind to but the URL changes from environment to environment. So, dynamically constructing the path is the best way or is there any other best practice. 2) My current project runs on IBM WAS8.5.5,and the JAX-WS annotated classes are automatically scanned. So, when should one use Endpoint publish method.
  • 9ilsdx 9rvj 0lo
    9ilsdx 9rvj 0lo about 5 years
    Amazing how the question makes the answer, where many other answers are actually questions.
  • 9ilsdx 9rvj 0lo
    9ilsdx 9rvj 0lo about 5 years
    It is exactly what the OP is trying, read the question and not post something random that doesn't work.