我使用XFire为我的应用程序创建一个Web服务包装器。XFire在运行时提供Web服务接口和WSDL(或者在编译时创建它们,不确切地说)。
我们的许多客户对Web服务不是很了解,此外,他们根本不阅读任何外部文档,如Javadoc。我知道可以将文档(用于参数和方法)直接添加到WSDL文件中。
我想过Annotations或Aegis XML文件,但我不知道如何。。。你知道办法吗?
编辑:我刚刚发现这个JIRA问题,但上一次活动是2006年。有什么想法吗?
XFire正缓慢地走向/dev/null。请改用CXF。换句话说,XFire被弃用,取而代之的是CXF——它几乎是相同的开发人员。
由于您使用Java优先的方法,我建议您使用CXF的java2wsdl
工具一次性生成WSDL,然后将文档放入其中,并告诉CXF使用那个文档化的WSDL,而不是让CXF在运行时/部署时生成自己的(未文档化的)WSDL。
这个页面几乎包含了您需要了解的关于在CXF中创建web服务的所有信息。
我关于CXF的最后一个提示是使用Aegis进行数据绑定,而不是JAXB。它不适用于复杂的POJO。
根据我的经验,我们对复杂的POJO和JAXB没有问题,唯一的问题是代码中开始充斥着JAXB元素。另一方面,Aegis文档非常稀疏,并且与CXF相关的维护不好。
让我加上关于XFire的两分钱。我们在JDK6(Tomcat6.0和5.5)下的XFie遇到了非常严重的问题。请看一下这个问题。在我们的案例中,在JDK6下使用4+web服务的XFire会导致应用程序服务器挂起(线程死锁等)。这很有趣,但在JDK5下一切都还好。
我完全同意Christian Vest关于从XFire迁移到CXF的观点。它在许多情况下都是有意义的,例如ESB Mule 2不再支持本机XFire连接器(另请参阅)。
我想补充一点,从XFire到CXF的迁移并不是一种简单的方式(例如,CXF具有与一些hibernate版本冲突的jar依赖关系,另请参阅),但它是可行的。在我们的案例中,我们做了几天没有代码更正(仅限Spring配置)。
我关于CXF的最后一个提示是使用Aegis进行数据绑定,而不是JAXB。它不适用于复杂的POJO。