我通过Apache Thrift创建了我的第一个Web服务。我正在使用Maven和Apache CXF在Tomcat上部署它。
Thrift为我创建了两个课程:
我正在自己的Guestbook.Iface
中实施GuestbookService.class
。
在我的beans.xml上,我将该类添加为端点:
<jaxws:endpoint
id="guestbook"
implementor="guestbook.GuestbookService"
address="/guestbook" />
当我访问Tomcat上的URL时,WSDL不包含任何要调用的方法。它应该已经getGuestbookEntries()
了。
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 :(得分:0)
我有点困惑,因为一方面是SOAP / WSDL而另一方面Thrift没有那么多共同点,除非它们都是可以用来创建Web服务的技术。通常,您希望使用Thrift自己的http服务器。我不确定如何在你的场景中做到这一点,但SOAP / WSDL肯定是使用Thrift的错误方式。
但是,如果您绝对不得不提供SOAP服务,则根本不能使用Thrift,或者您必须实现支持这两个选项的双接口以及客户端可以选择其首选接口的位置。
但要注意,如果你没有至少一些线索,我不会推荐后者。双界面需要一些有趣的架构决策和更多工作,尤其是在更复杂的数据结构发挥作用时。如果您怀疑它是否有助于解决您的实际问题,那么很可能是错误的解决方案。但是有可能(去过那里)。