Question

I'm writing a (very) small SOAP web service using Glassfish. The code I have is below:

Milliseconds.java

package com.suture.self.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.jws.soap.SOAPBinding.Use;

@WebService
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL)
public interface Milliseconds {
    @WebMethod
    String currentMilliseconds();
}

MillisecondsImpl.java

package com.suture.self.ws;

import javax.jws.WebService;

@WebService(endpointInterface = "com.suture.self.ws.Milliseconds") 
public class MillisecondsImpl implements Milliseconds {

    @Override
    public String currentMilliseconds() {
        return String.valueOf(System.currentTimeMillis());
    }
}

MillisecondsEndpoint.java

package com.suture.self.ws;

import javax.xml.ws.Endpoint;

public class MillisecondsEndpoint {

    public static void main(String[] args) {
        Endpoint.publish("http://sutureself.com:9292/ws/milli", new MillisecondsImpl());
    }
}

When I run this on my Glassfish server (through Eclipse), the admin console shows me the usual working ?wsdl and ?Tester endpoints, but not the one I have created. Hitting that url (http://sutureself.com:9292/ws/milli) in a browser also returns an "Unable to connect" error.

If I select "Launch", then I am shown two links (one for each http port in Glassfish), but these return a 404.

If I just try to hit the "Context Root" path, that also doesn't work. I need a point of entry and I just cannot find it.

What am I missing?

Please note! All the sutureself.com's in the above code are actually localhost, SO doesn't like you posting URL's with localhost evidently.

Any more information as to how my setup is configured will happily be added.

Was it helpful?

Solution

I also did an example in SOAP WS some time before but I have one doubt, why are you using Glassfish Server because you are deploying your WS by main method which will bind the address with your Service. I think for that no server is required.

Just follow these steps with eclipse for testing the WS-

Note: Please shutdown your Glassfish Server

1-Create a new java project(not dynamic web project)

2-Create a HelloWorld class in hello package

package hello;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class HelloWorld{
    @WebMethod
    public String method(String name)
    {

        return "hello " +name;
    }
}

you don't need to make interface explicitly.

3:Now create a Publisher class to publish the WebService in hello package

package hello;

import javax.xml.ws.Endpoint;

public class Publisher {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Endpoint.publish("http://LH.com:9292/ws/milli", new HelloWorld());
    }

}

Now you have bound your WS with http://LH.com:9292/ws/milli. Check it by http://LH.com:9292/ws/milli?wsdl or http://LH.com:9292/ws/milli?test

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top