2017-03-08 11 views
1

私自身の理解のために、自分のWebサービスをJavaで作成する方法を学びたいと思います。Java WebサービスWSDLがロードされていてもWebサービスではありません

私はlocalhostに行きました:9998/calculate?wsdl私のwsdlファイルを見ることができますが、私がlocalhostに行ったときに:9998/calculate Webサービスが見えません。私はちょうど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.xml.ws.Endpoint; 

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

任意の助けをいただければ幸いです。

+0

WSDLはSOAPサービスを表します。各サービス操作では、HTTP要求がSOAP呼び出しである必要があります。これは、ブラウザにURLを入力することによって行われた単純なHTTP GET要求とは異なります。 https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383526およびhttps://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383539を参照してください。 – VGR

答えて

0

あなたのWebサービスは正しいです。 HTTP POSTリクエストを送信する必要があります。

オプション1

あなたはあるsoapUI(https://www.soapui.org/downloads/soapui.html)でそれをテストすることができます。 http://localhost:9998/calculate?WSDL

enter image description here

enter image description here

オプション2

を使用して新しいプロジェクトを作成します。また、SOAPリクエストを作成し、カール

を使用して、コマンドラインから、それをテストすることができます。 /var/tmp/calculate_add.xmlに作成しました。

[email protected]> pwd 
/var/tmp 
[email protected]> 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> 

リクエストを送信します。 注:あなたの本当のIPへ変更文字列YourServerIP:

[email protected]> curl -i -H "Content-Type: text/xml;charset=UTF-8" --data "@/var/tmp/calculate_add.xml" -X POST http://YourServerIP:9998/calculate 

応答は次のとおりです。

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> 
+0

さて、私は、localhost:9998/myhtmlpageのページ、または私のWebサービスでaddメソッドを呼び出した2つのテキストボックスを持つWebページであった行を探していたとします。これをjava/eclipseで行う方法はありますか?私はおそらく私のHTMLページのシーンの背後にいくつかのjavascriptが必要になります。 –

0

あなたは、単純なブラウザを通してWebサービスをテストすることはできません。いずれかのWebサービスのクライアントコードを記述するか、いくつかのツールを使用する必要があります。郵便配達員はそのようなツールの1つで、SOAPをテストするために使用することができます。&すべてのhttpサービス。

http://blog.getpostman.com/2014/08/22/making-soap-requests-using-postman/

関連する問題