Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Web服务_Java_Xml_Web Services_Web Applications - Fatal编程技术网

Java中的Web服务

Java中的Web服务,java,xml,web-services,web-applications,Java,Xml,Web Services,Web Applications,在开发Java项目时,通常使用什么连接到Web服务 有不同的API-s可以完成这项工作。 我从不同的书籍和教程中了解到:JAX-WS、JAXB、JAXM、JAXR、JAX-RPC、Axis ans等等 我想知道你到底用了什么,用了多少?如果您愿意,可以将此作为一项调查:)很好。因为我们在Spring中有大量投资,所以我们使用JAXB。您可以使用ApacheAxis。如果您提供WSDL,这将自动生成java存根。生成存根后,它就像调用普通java类一样。我使用了和。如果您正在使用,那么CXF是一个

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

有不同的API-s可以完成这项工作。 我从不同的书籍和教程中了解到:JAX-WS、JAXB、JAXM、JAXR、JAX-RPC、Axis ans等等


我想知道你到底用了什么,用了多少?如果您愿意,可以将此作为一项调查:)

很好。

因为我们在Spring中有大量投资,所以我们使用JAXB。

您可以使用ApacheAxis。如果您提供WSDL,这将自动生成java存根。生成存根后,它就像调用普通java类一样。

我使用了和。如果您正在使用,那么CXF是一个非常好的选择。正如Phill所提到的,也有,但是CXF是建立在JAX-WS规范之上的。如果您不使用Spring,那么我会说RI是一条路要走,特别是因为它与Java 6捆绑在一起。

对于POX+HTTP或RESTful web服务,或者一个合适的版本就足够了

对于Apache Axis,+1


但是JAX-WS也是一个不错的选择。

我使用了Axis和Axis2,发现它们都非常好

我认为最常用的是ApacheAxis2。使用它创建服务非常容易,您会发现很多教程。

这里的Axis支持者需要精确

三年多前,Axis1.4于2006年4月发布后,Axis1.x项目被放弃。我们最近在Axis1.4客户端库中遇到了几个非常关键的线程安全错误,包括100%的CPU旋转和死锁。这些问题在Axis1.x bug数据库中有很好的记录(但仍未解决)。不用说,我们放弃了Axis1.x(只使用原始的ApacheHTTP客户端代码)

轴2是一个全新的代码库。。。也许其他人可以对此发表评论

根据我们的经验,我们考虑了SOAPWeb服务的<强> Metro <强> > <强> CXF ,<强>手工编码< /强>,和(也许)<强>轴2 < /强>。(只要您有选择,我们推荐基于REST的方法而不是SOAP,并且使用我们喜欢的Restlet框架)


依我看,如果你选择Axis 1.x,那你绝对是疯了。要回答你的问题,我们首先需要区分你列出的工具

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

JAX-B1和JAX-2是XML到对象绑定API,JAX-WS是基于WSDL和SOAP的Web服务API,是JAX-RPC的前身,JAX-M是较早的XML消息传递API,JAX-R是用于与UDDI和ebXML等注册中心交互的抽象API

从Java.net JAX-RPC页面:

JAX-RPC专家组拥有广泛的行业参与度,Sun Microsystems作为专家组的领导者。最初的规范(JAX-RPC1.0)是JSR-101,于2002年6月发布。2003年10月发布了一个维护版本,提供了与JAXB1.0更好的集成以及对doc/literal更好的支持

规范的下一个版本从JAX-RPC2.0重命名为JAX-WS2.0,并正在开发为JSR-224;此版本将解决该领域中的许多附加需求,并将增强JAXB和JAX-WS规范之间的协同作用。您可以在这里访问JAX-WS项目页面

自从JAX-B1.0和JAX-RPC1.0以来,SOAP堆栈已经走过了漫长的道路,因此我建议远离Axis1.0和XFire(如果我记得正确的话,它们甚至没有实现JAX-RPC1)。有许多SOAP堆栈实现了较新的API(JAX-WS2.x和JAX-B2.x)

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

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

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

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

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

我最后要提醒的是,在允许工具从wsdl自动生成Web服务接口时要小心。JAX-WSRI WSDL2Java工具喜欢在生成的接口中放置指向WSDL的硬编码路径。我的观点是,您应该自动生成一次接口,然后删除硬编码的URL和QName引用,使接口适用于所有实现的Web服务