gpt4 book ai didi

java - 在 Java 中发布和停止端点 Web 服务

转载 作者:搜寻专家 更新时间:2023-10-31 19:39:58 25 4
gpt4 key购买 nike

我正在尝试通过单击按钮在与主程序不同的线程中启动/停止端点 Web 服务。开始工作正常,我可以毫无问题地访问我的所有 WebMethods。问题是,当我单击停止按钮尝试停止 Web 服务端点时,出现异常并且我不知道它是什么。我也是 Java 新手。

提前致谢。

在“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)

服务器类:

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!");
}
}
}
}
}

我是如何尝试从我的主程序中停止服务/线程的:

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");

最佳答案

问题解决了!

不要使用 '0.0.0.0'。出于某种原因,在“0.0.0.0”上创建服务是可行的(使用机器的实际 ip),但 Endpoint.stop() 不能很好地使用它。

相反,我只是使用 'System.getEvn('COMPUTERNAME')' 并使用机器名称创建服务。

关于java - 在 Java 中发布和停止端点 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com