Java Web服务WSDL加载,但不加载Web服务

Java Web服务WSDL加载,但不加载Web服务,java,web-services,soap,wsdl,localhost,Java,Web Services,Soap,Wsdl,Localhost,我正试图学习如何用Java创建自己的web服务,以供自己理解 当我到达localhost:9998/calculate?wsdl时,我可以看到我的wsdl文件,但当我到达localhost:9998/calculate时,我看不到我的web服务。我刚刚在chrome中得到一个错误,说ERR_EMPTY_RESPONSE localhost没有发送任何数据 这是我的界面: package Webservice; import javax.jws.WebMethod; import javax.

我正试图学习如何用Java创建自己的web服务,以供自己理解

当我到达localhost:9998/calculate?wsdl时,我可以看到我的wsdl文件,但当我到达localhost:9998/calculate时,我看不到我的web服务。我刚刚在chrome中得到一个错误,说ERR_EMPTY_RESPONSE localhost没有发送任何数据

这是我的界面:

package Webservice;


import javax.jws.WebMethod;
import javax.jws.WebService;

//Service Endpoint Interface
@WebService
public interface Calculate{

    @WebMethod 
    public int add(int x, int y);

    @WebMethod 
    public int sub(int x, int y);

    @WebMethod 
    public int mul(int x, int y);
}
package Webservice;
import javax.jws.WebService;

//Service Implementation
@WebService(endpointInterface = "Webservice.Calculate")
public class CalculateImpl implements Calculate {

    public CalculateImpl() {

    }

    @Override
    public int add(int x, int y) {
        return (x+y);
    }

    @Override 
    public int sub(int x, int y) {
        return (x-y);
    }

    @Override
    public int mul(int x, int y) {
        return (x*y);
    }
}
以下是我对接口的实现:

package Webservice;


import javax.jws.WebMethod;
import javax.jws.WebService;

//Service Endpoint Interface
@WebService
public interface Calculate{

    @WebMethod 
    public int add(int x, int y);

    @WebMethod 
    public int sub(int x, int y);

    @WebMethod 
    public int mul(int x, int y);
}
package Webservice;
import javax.jws.WebService;

//Service Implementation
@WebService(endpointInterface = "Webservice.Calculate")
public class CalculateImpl implements Calculate {

    public CalculateImpl() {

    }

    @Override
    public int add(int x, int y) {
        return (x+y);
    }

    @Override 
    public int sub(int x, int y) {
        return (x-y);
    }

    @Override
    public int mul(int x, int y) {
        return (x*y);
    }
}
这是我的出版商:

package Webservice;
import javax.xml.ws.Endpoint;

public class CalculatePublisher {
    public static void main(String[] args) {
        Endpoint ep = Endpoint.create(new CalculateImpl());
        ep.publish("http://localhost:9998/calculate");
    }
}

任何帮助都将不胜感激。

您的web服务是正确的。您需要发送HTTP POST请求

选项1

您可以使用soapUI()进行测试。使用创建新项目

选项2

您还可以使用curl从命令行测试它

创建soap请求。我在/var/tmp/calculate_add.xml上创建了它:

me@centos> pwd
/var/tmp
me@centos> cat calculate_add.xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://Webservice/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:add>
         <arg0>1</arg0>
         <arg1>1</arg1>
      </web:add>
   </soapenv:Body>
</soapenv:Envelope>
答复是:

HTTP/1.1 200 OK
Date: Thu, 09 Mar 2017 08:55:12 GMT
Transfer-encoding: chunked
Content-type: text/xml; charset=utf-8

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:addResponse xmlns:ns2="http://Webservice/"><return>2</return></ns2:addResponse></S:Body></S:Envelope>
HTTP/1.1200正常
日期:2017年3月9日星期四08:55:12 GMT
传输编码:分块
内容类型:text/xml;字符集=utf-8
2.

您的web服务是正确的。您需要发送HTTP POST请求

选项1

您可以使用soapUI()进行测试。使用创建新项目

选项2

您还可以使用curl从命令行测试它

创建soap请求。我在/var/tmp/calculate_add.xml上创建了它:

me@centos> pwd
/var/tmp
me@centos> cat calculate_add.xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://Webservice/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:add>
         <arg0>1</arg0>
         <arg1>1</arg1>
      </web:add>
   </soapenv:Body>
</soapenv:Envelope>
答复是:

HTTP/1.1 200 OK
Date: Thu, 09 Mar 2017 08:55:12 GMT
Transfer-encoding: chunked
Content-type: text/xml; charset=utf-8

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:addResponse xmlns:ns2="http://Webservice/"><return>2</return></ns2:addResponse></S:Body></S:Envelope>
HTTP/1.1200正常
日期:2017年3月9日星期四08:55:12 GMT
传输编码:分块
内容类型:text/xml;字符集=utf-8
2.

您无法通过简单的浏览器测试Web服务。您要么必须编写webservice客户端代码,要么需要使用一些工具。Postman就是这样一个工具,可以用来测试SOAP、REST和任何http服务


您无法通过简单的浏览器测试Web服务。您要么必须编写webservice客户端代码,要么需要使用一些工具。Postman就是这样一个工具,可以用来测试SOAP、REST和任何http服务


WSDL表示SOAP服务。每个服务操作都要求HTTP请求是SOAP调用,这与通过在浏览器中输入URL发出的普通HTTP GET请求不同。请参阅和。WSDL表示SOAP服务。每个服务操作都要求HTTP请求是SOAP调用,这与通过在浏览器中输入URL发出的普通HTTP GET请求不同。请参阅和。好的,假设我想要一个localhost:9998/myhtmlpage的页面,或者类似的页面,它有两个文本框,用于调用web服务上的add方法。在java/eclipse中有这样做的方法吗?我可能需要在html页面的后台使用一些javascript。好吧,假设我想要一个localhost:9998/myhtmlpage的页面,或者类似这样的页面,它有两个文本框,在我的web服务上调用add方法。在java/eclipse中有这样做的方法吗?我可能需要在html页面的后台使用一些javascript。