1

私は単純なWebサービスを持っています:

私も同じ問題を抱えてる。「?wsdl」を追加しないと、ソープが失敗します。どうすればこの例外を回避できますか?

@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
    @WebMethod
    @WebResult(partName = "time_response")
    String getTimeAsString();

    @WebMethod
    @WebResult(partName = "time_response")
    long getTimeAsElapsed();

}

そして実装:

@WebService(endpointInterface = "x.y.z.TimeServer")
public class TimeServiceImpl implements TimeServer {


    public TimeServiceImpl() {}

    @Override
    public String getTimeAsString() {return new Date().toString();}

    @Override
    public long getTimeAsElapsed() {return new Date().getTime();}

}

この Web サービスを Jboss As 7.0.1 で実行しています。 すべてがうまくいきます!

リンクlocalhost:8080/project/time?wsdlを開くと 、すべてうまくいきます -私は wsdl を持っています。

しかし、「?wsdl」を追加しないと例外があります。

14:26:58,192 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (http-localhost-127.0.0.1-8080-1) Interceptor for {http://x.z.y/}HelloWorld has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: No such operation: null (HTTP GET PATH_INFO: /project/timenull)
at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:88)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)

そして、サーバーから次の応答があります。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>
     No such operation: null (HTTP GET PATH_INFO: /soap-service/timenull)
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>

どうすればこの例外を回避できますか?

このエラー応答の代わりに、クライアントに別のメッセージが表示された方がよいでしょうか? クライアントが「?wsdl」なしでリンクを開いたときに別の XML を送信するにはどうすればよいですか?

タナクス

4

2 に答える 2

2

Web サービスは HTTP GET をサポートしません。サービスの URL を入力すると、HTTP GET が直接作成されます。それがエラーで応答する理由ですNo such operation

代わりに、SOAP POST を作成して Web サービスからの応答を取得する必要があります。このための Web サービス クライアントを記述します。このリンクを参照して、Web サービス クライアントを作成できます。

于 2014-06-26T11:06:38.107 に答える
0

@grepこの投稿は少し古いと思いますが、同様の問題を抱えている他の誰かができる場合は、まだ答えようとします。まあ、私は同じ問題を抱えていて、それらの背後にある理由は何だろうと思っていました. これが私が試して問題を修正した2つのステップです。ブラウザで wsdl にアクセスできることを確認してください。

  1. SOAPUI を閉じ、C:/users 配下の user フォルダに作成された soapui_workspace.xml を削除します。
  2. Soap_ui を再起動し、設定 > プロキシ設定を開きます。
  3. 自動からなしに変更します。
  4. 新しいプロジェクトを作成します。これで問題が解決し、SOAPUI の Web サービスから応答が得られました。

    次に、この場合、@Dinal で言及されているように、Web サービスが正しくデプロイされていることを確認してください。

于 2015-01-21T05:47:13.993 に答える