Próbuję uruchomić/zatrzymać usługę sieciową Endpoint w osobnym wątku od mojego głównego programu za pomocą kliknięcia przycisku. Rozpoczęcie pracy w porządku, jestem w stanie uzyskać dostęp do wszystkich moich WebMethods bez problemu. Problem polega na tym, że po kliknięciu przycisku stop, aby spróbować zatrzymać punkt końcowy usługi WWW, pojawia się wyjątek i nie wiem, co to jest. Jestem też nowicjuszem w Javie.Publikowanie i zatrzymywanie usługi internetowej punktu końcowego w Javie
Z góry dziękuję.
Excetion rzucony na 'ep.stop()': class
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)
Serwer:
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!");
}
}
}
}
}
Jak jestem próbując zatrzymać usługę/nici z mojego głównego programu:
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");
ta powinna być odpowiedź, używałem 0.0.0.0 a błąd przyniósł mi tutaj. –