Ich versuche einen Endpoint Web Service in einem separaten Thread von meinem Hauptprogramm mit einem Klick auf eine Schaltfläche zu starten/stoppen. Starten funktioniert einwandfrei, ich kann ohne Probleme auf alle meine WebMethods zugreifen. Das Problem ist, wenn ich auf die Stop-Schaltfläche klicke, um den Web-Service-Endpunkt zu stoppen, bekomme ich eine Ausnahme und ich weiß nicht, was es ist. Ich bin auch neu in Java.Endpoint Web Service in Java veröffentlichen und stoppen
Vielen Dank im Voraus.
Excetion bei 'ep.stop()' geworfen:
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-Klasse:
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!");
}
}
}
}
}
Wie ich den Dienst/Thread von meinem Hauptprogramm bin versucht zu stoppen:
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");
Dies sollte die Antwort sein zu blockieren, war ich mit 0.0.0.0 und der Fehler hat mich hierher gebracht. –