Java SE 8:最小的 JSON Web 服务



我正在尝试在Java 8中创建一个最小的JSON Web服务。这就是我尝试这样做的方式:

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class DemoHttpServer {
@WebMethod
public double square(double num) {
return num * num;
}
public static void main(String[] args) throws InterruptedException {
String address = "http://192.168.2.66:8080/demo";
Endpoint.publish(address, new DemoHttpServer());
System.out.println("Service running at " + address);
System.out.println("Type Ctrl+c to exit");
Thread.sleep(Long.MAX_VALUE);
}
}

但是,当我在浏览器中点击 URL 时,我得到ERR_EMPTY_RESPONSE.谁能告诉我我错过了什么?我不想为此使用任何外部库。

你没有写出导致ERR_EMPTY_RESPONSE错误的确切网址,但你说你的wsdl正在工作,所以你的WS应该工作。

您有一个 SOAP WebService,因此您可以使用 soapui 或 postman(另请参阅此处(来调用您的服务(位于http://192.168.2.66:8080/demo/DemoHttpServerService(。

您还可以从 WSDL 生成 JAX-WS Java 客户机。例如,在Eclipse中有一个工具。对于真正的Java用于你的WS,你应该使用这个或类似的东西。

最后,你可以编写一个简单的程序来调用你的服务,只是为了测试(改编自这里(:

package another;
import javax.jws.WebService;
@WebService
public interface IWebServiceTest {
double square(double num);
}
package another;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class Main {
public static void main(String[] args) throws Exception {
String url = "http://192.168.2.66:8080/demo/DemoHttpServerService?wsdl";
String namespace = "http://another/";
QName serviceQN = new QName(namespace, "DemoHttpServerService");
Service service = Service.create(new URL(url), serviceQN);
String portName = "DemoHttpServerPort";
QName portQN = new QName(namespace, portName);
IWebServiceTest sample = service.getPort(portQN, IWebServiceTest.class);
double result = sample.square(3);
System.out.println(result);
}
}

在项目上尝试使用 java 包时,请注意它的名称。

相关内容

  • 没有找到相关文章