0

Apache Thrift を使用して最初の Web サービスを作成しました。Maven と Apache CXF を使用して Tomcat にデプロイしています。

Thrift は私のために 2 つのクラスを作成しました。

  • エントリークラス
  • Guestbook.class

私は自分で実装Guestbook.IfaceしていGuestbookService.classます。

beans.xml で、クラスをエンドポイントとして追加します。

<jaxws:endpoint 
  id="guestbook" 
  implementor="guestbook.GuestbookService" 
  address="/guestbook" />

Tomcat で URL にアクセスすると、WSDL に呼び出すメソッドが含まれていません。getGuestbookEntries()すでにあるはずです。

  1. 足りないものはありますか?
  2. エンドポイントに適切なクラスを追加していますか? Guestbook.Processor内部クラスがあることに気付きました。

にアクセスすると、次の応答が返されますhttp://localhost:8080/thriftGuestbook/guestbook

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>
No binding operation info while invoking unknown method with params unknown.
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
4

1 に答える 1

0

SOAP/WSDL と Thrift には、Web サービスの作成に使用できる技術であることを除けば、それほど多くの共通点がないため、少し当惑しています。通常、Thrift 独自の http サーバーを使用します。あなたのシナリオでそれを行う方法はわかりませんが、SOAP/WSDL は確かに Thrift を使用する間違った方法です。

ただし、どうしても SOAP サービスを提供する必要がある場合は、Thrift をまったく使用できないか、両方のオプションをサポートし、クライアントが好みの種類のインターフェイスを選択できるデュアル インターフェイスを実装する必要があります。

ただし、何をしているのかについて少なくともいくつかの手がかりがない場合は、後者をお勧めしません。デュアル インターフェイスには、いくつかの興味深いアーキテクチャ上の決定と、特により複雑なデータ構造が関係する場合に、さらに多くの作業が必要になります。実際の問題を解決するのに役立つかどうか疑問がある場合は、おそらく間違った解決策です。しかし、それは可能です(そこにいて、それをしました)。

于 2013-09-19T01:08:43.073 に答える