目前我正在评估Java中的Web服务框架数量.我需要Web服务框架来帮助我公开在JBoss上运行的现有应用程序的一些功能.该应用程序主要是使用Spring和POJO(没有EJB)开发的.
我需要的是具有以下属性的框架:
它应该提供自动生成样板代码的工具,并通过消除重复性任务来节省时间,例如从Java生成WSDL的工具(java2wsdl),生成端点的工具等.
应用程序应该可以轻松部署在现有的J2EE平台(JBoss)上,这意味着它应该包含尽可能少的配置文件(如axis2框架中的axis2.xml).
此外,最好能够在现有应用程序的.war存档中部署Web服务 .(似乎Axis2需要一个单独的Web服务应用存档.)
使用POJO和Spring的组合将非常酷.
通常,框架应该具有干净的结构和设计(例如Spring-WS缺少它),良好的文档以及其他任何表征好的软件.
框架最好包含一些标准功能,如JAX-WS等,而不是供应商特定的方法.
我简要地检查了一下
Axis2的
Apache CXF
和太阳的地铁
春天WS
但仍然很难决定在我的情况下使用什么:
Axis2似乎是如此低级别,它需要单独的应用程序存档和许多配置
Spring WS似乎太不透明了,"为印象目的而复杂(?)"
Apache CXF和Metro可能是两个框架,我更喜欢从中选择,但仍然如此
我需要您对在实际应用程序中使用其中一些内容的意见和经验.
我已经使用过CXF的先行者XFire了一段时间了,这并不算太糟糕.当时,我们从Axis迁移有两个主要原因:性能和易于开发.当时(不知道现在是否真的如此),XFire的性能远远超过其他任何东西,并且通过注释驱动的开发,而不是必须运行存根生成,添加新的真的很容易网页服务.
CXF似乎更相似但更好 - 我们还没有迁移,因为开发时间的限制以及没有迫切的理由这样做(加上相对缺乏文档6-12个月前也不是令人鼓舞).此外,我最近没有真正评估过市场,所以我无法告诉你CXF如何与当代竞争对手站在一起.
关于你的观点:
没有要生成的样板代码,WSDL会自动从服务类的注释创建并由服务器发布.
在Tomcat中部署相对简单.只需在web.xml中定义另一个servlet,并将URL模式映射到此servlet.
我们的Web服务部署在WAR文件中,我不确定其他选择是什么,但这似乎是默认和明显的方法.
POJO最初运作良好; 我们现在已经将大部分Web服务对象创建移动到Spring,以便连接更复杂的条件依赖项,并且没有遇到任何问题.
文档是CXF最初的一个弱点,虽然现在看起来似乎更好.一般的设计和架构似乎相对理智; 在一个人自己的过滤器中插入以修改传输细节并不是很痛苦,并且通常会考虑扩展现有的类(因此,合理的方法被标记为受保护而不是私有).
CXF完全支持JAX-WS.
所以我可能有点不偏不倚,因为我还没有尝试过其他的,但是我会赞一口看看CXF.如果你需要调整它,它非常快,相对简单,相当简单.