当前位置:  开发笔记 > 编程语言 > 正文

Java中的Web服务

如何解决《Java中的Web服务》经验,为你挑选了1个好方法。

在开发Java项目时,您通常使用什么来连接Web服务?

有不同的API可以完成这项工作.从我读过的不同书籍和教程:JAX-WS,JAXB,JAXM,JAXR,JAX-RPC,Axis等等.

我对你究竟使用的是什么以及使用了多少感兴趣?如果你愿意,可以把这作为一项调查:)



1> DavidValeri..:

要回答您的问题,我们首先需要区分您列出的工具.

JAX-WS,JAXB,JAXM,JAXR,JAX-RPC是XML和Web服务相关的API,而Axis 1和2是这些API中的零个,一个或多个的实现,具体取决于版本.

JAX-B 1和2是XML到对象绑定API,JAX-WS是一个基于WSDL和SOAP的Web服务API,是JAX-RPC的前身,JAX-M是一个较旧的XML消息传递API,而JAX-R是一个抽象API用于与UDDI和ebXML等注册表进行交互.

从Java.net JAX-RPC页面:

JAX-RPC专家组在Sun Microsystems担任EG主管时拥有广泛的行业参与.初始规范(JAX-RPC 1.0)是JSR-101,于2002年6月发布.2003年10月发布了维护版本,提供了与JAXB 1.0的更好集成以及对doc/literal的更好支持.

规范的下一个版本从JAX-RPC 2.0重命名为JAX-WS 2.0,并且正在开发为JSR-224; 此版本将解决该领域的许多其他要求,并将增加JAXB和JAX-WS规范之间的协同作用.您可以在此处访问JAX-WS项目页面.

自从JAX-B 1.0和JAX-RPC 1.0以来,SOAP堆已经走了很长的路,我建议远离Axis 1.0和XFire(如果我没记错的话,甚至不实现JAX-RPC 1).有许多SOAP堆栈可以实现更新的API(JAX-WS 2.x和JAX-B 2.x).

正如其他人所提到的,Axis 2,JAX-WS RI和CXF都是有效的选择.这些SOAP堆栈更加成熟,支持许多现代WS-*规范.

关于使用IDE自动生成客户端代码的注释,请注意.虽然我是分别从XSD和WSDL生成XML数据绑定代码和JAX-WS接口的主要支持者,但我提醒您在IDE中使用内置向导来执行自动生成.如果您在一个拥有多个开发人员的团队中工作或计划修改生成的代码,您应该考虑这种方法的可维护性.

如果您有多个开发人员,那么其中一个人将使用不同版本的自动生成工具,不同的IDE,或者在他们的工具中使用不同的配置.此外,如果您从向导自动生成,则由开发人员记住,如果您将来需要重新生成代码,他们将如何生成代码.如果更改XSD并且不记得上次自动生成时的配置,则生成的代码可能与整个程序中已使用的现有代码不一致.

如果您计划修改生成的代码,请确保您只需要执行一次,从那时起您可以轻松地手动维护代码或定期将重新生成的代码与修改合并.

通过在构建过程中编写代码生成脚本可以避免这两个问题.JAX-WS和JAX-B都带有Ant任务和/或Maven 2插件,这些插件易于在您的构建中使用.认真对待这些警告,因为我看到多个项目在需要修改5年前由离开公司的员工生成的代码时会遇到这些问题.

我最后提醒的是,在允许工具从WSDL中自动生成Web服务接口时要小心.JAX-WS RI WSDL2Java工具喜欢将硬编码路径放置在生成的接口中的WSDL中.我认为您应该自动生成一次接口,然后删除硬编码的URL和QName引用,使接口适用于实现接口所代表的WSDL绑定的所有Web服务,而不仅仅是您的一个端点. WSDL描述.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有