2013-06-30 39 views
0

我通過Apache Thrift創建了我的第一個Web服務。我使用Maven和Apache CXF將它部署在Tomcat上。Thrift服務沒有顯示任何調用方法

節儉創造了我兩個類:

  • Entry.class
  • Guestbook.class

我實現我自己的GuestbookService.classGuestbook.Iface

在我的beans.xml我添加類作爲一個端點:

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

當我訪問的URL在Tomcat的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> 

回答

0

我因爲SOAP/WSDL有點摸不着頭腦,一方面和節儉,另一方面也沒有那麼多的共同點,除了它們都可以用來創建Web服務的技術。通常你想使用Thrift自己的http服務器。我不確定如何在你的場景中做到這一點,但SOAP/WSDL肯定是使用Thrift的錯誤方式。但是,如果您絕對不得不提供SOAP服務,則根本無法使用Thrift,或者必須實現支持這兩種選項的雙接口,並且客戶端可以在其中選擇其首選接口類型。

但是要警告,如果你沒有至少一些線索你在做什麼,我不會推薦後者。雙界面需要一些有趣的架構決策和更多的工作,特別是當更復雜的數據結構發揮作用時。如果您懷疑它是否有助於解決您的實際問題,那很可能是錯誤的解決方案。但它可能(在那裏,這樣做)。

相關問題