Publishing and stopping the endpoint web service in Java

I am trying to start / stop the endpoint web service in a separate thread from my main program with the click of a button. Starting to work perfectly, I can access all my WebMethods without any problems. The problem is that when I click the Stop button to try to stop the endpoint of the web service, I get an exception and I don’t know what it is. I am also new to Java.

Thanks in advance.

Experiment reset to 'ep.stop ()':

WebService Running On: http://0.0.0.0:9898/

        Exception in thread "Thread-0" java.lang.NullPointerException
            at com.sun.xml.internal.ws.transport.http.server.ServerMgr.removeContext(Unknown Source)
            at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.stop(Unknown Source)
            at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.stop(Unknown Source)
            at com.simba.Server.startWebSrv(Server.java:27)
            at com.simba.Server.run(Server.java:13)

Server Class:

import javax.xml.ws.Endpoint;

public class Server extends Thread {

      public volatile boolean active = true;
      private Endpoint ep; 
      private String ip = "0.0.0.0";

      public void run(){
            ep = Endpoint.publish("http://" + ip + ":9898/",  new SWS());
            startWebSrv();
      }

      private void startWebSrv(){
          synchronized(this){
              try {
                  while (active) {
                      System.out.println("WebService Running On: http://" + ip + ":9898/");
                      wait();
                  }
              }catch (InterruptedException e) {
                  e.printStackTrace();
              }finally{
                if(!active){
                    ep.stop();
                    System.out.println("WebService Stopped!");
                }
              }
          }
      }
}

How I am trying to stop a service / thread from my main program:

MenuItem mntmToggleWebservice = new MenuItem(menu_4, SWT.NONE);
        mntmToggleWebservice.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                synchronized(srv){
                    srv.active = false;
                    srv.notifyAll();            
                }
            }
        });
        mntmToggleWebservice.setText("Toggle WebService");
+5
source share
2 answers

! '0.0.0.0'. - "0.0.0.0" ( ip), Endpoint.stop() . "System.getEvn(" COMPUTERNAME ")" .

+8

"enter"

public class ServiceMain {

    private static void DoNothing() {

    }

    public static void main(String[] args) {  
        String address = "http://127.0.0.1:7775/hb";  
        Endpoint ep = Endpoint.publish(address, new ServiceImp());
        Scanner scanIn=new Scanner(System.in);
        System.out.println("Web Service Release Successfully!"); 
        while(!scanIn.next().equals("stop")){
            DoNothing();
        }
        scanIn.close();
        ep.stop();
        System.out.println("Web Service Close Successfully!"); 

    }  
} 
0

All Articles