使用Java Web服务的方法是什么?

时间:2011-08-02 09:07:11

标签: java web-services spring tomcat

我正在开发一个包含多个框架(spring,hibernate,spring-security,ZK for GUI)的Web应用程序,并使用Tomcat作为app server。我必须说我对java Web服务技术没有任何经验。事实上,我几乎肯定会在不久的将来为一些外部应用程序公开一些服务,我想知道将要走的路(考虑我正在使用的框架)......

我看到并阅读了关于Axis,Axis2,JAX-WS的各种教程和一些问题(link)...让我感到困惑的一点是我不知道什么是在现有Web应用程序中集成服务的通用实践(如果有)(主要在项目组织方面)。我现在看到,我需要实现的这些服务部分依赖于现有的源代码,所以我不知道是否应该使用完全独立的项目,或者我可以把它放在我现有的web应用程序文件夹中(我尝试使用Axis2,但不知道这是否是一个好习惯)。

感谢。

5 个答案:

答案 0 :(得分:2)

我对Spring-WS 2+和手动Castor映射有很好的经验。是简单但强大的组合。

Spring-ws 2:

  • 提供契约优先开发(特别适用于具有多项服务的Web应用程序)。
  • 提供WS注释
  • 支持XML映射(Castor,JaxB等)

脚轮:

  • 基于xml配置的映射
  • 允许将多个消息(请求/响应)映射到一个java对象(基于xml配置)

如果您使用的是某些Java EE 6服务器,请考虑使用JAXB进行手动映射:

  • 基于注释的映射
  • 应该比Castor
  • 更快
  • 允许将多个消息(请求/响应)映射到一个java对象(当您使用java继承时)

答案 1 :(得分:2)

如何组织项目?

总的来说,我同意@ericacm,但有一件事你应该记住......你说你将在不久的将来开发数量的服务。您可能会想要在单独的服务器上托管服务,例如出于性能,可用性或可维护性的原因。这可能会影响您分离项目的决定。此外,分离“强制”松散耦合,但因此引入了跨多个WAR的会话共享等其他挑战。这是一个逐案判决。

如果我遇到你的情况,我首先会问自己这些服务是否在逻辑上属于网络应用程序。

<强>实施

当涉及到WS- *实现时,你必须做出两个决定:

  1. 决定使用API​​;今天,我看不出任何理由不将JAX-WS与JAXB一起作为API使用,它们运行良好且标准化。
  2. 决定一个框架;我有使用Axis2和METRO的经验(请记住,JSE 1.6+提供了基本的JAX-WS支持)。两者都运作良好。如果使用JAX-WS API,则很容易更改框架。

答案 2 :(得分:1)

您可以继续将它们放入同一个项目中。每个Web服务都将是一个额外的接口和实现类以及一些配置。

因为你使用Spring CXF是一个很好的选择作为JAX-WS,因为它与Spring很好地集成。请将this page视为首发。

答案 3 :(得分:1)

Spring-WS是简单Web服务的复杂框架。如果您想完全了解Web服务并了解Web服务的细节,请学习Spring-WS。它非常灵活,提供了很多选择。

否则,如果您想要更简单的替代方案,请使用JAX-WS。 Spring支持JAX-WS注释。请参阅第17.5.7节。使用JAX-WS RI的Spring支持导出Web服务。

http://static.springsource.org/spring/docs/2.5.x/reference/remoting.html

答案 4 :(得分:0)

是否可以通过JAX-WS手动创建WS Server和WS Client(无需生成器)?特别是如果您正在开发一个大型应用程序,您希望重用对象,但生成器生成的许多类可以达到99%相同(例如,如果您的应用程序是WS Client,则必须连接到设计糟糕的外部WS服务器)。是否有一些教程如何手动创建ws?

我不喜欢发电机并完全同意http://ogrigas.eu/spring/2010/04/spring-ws-and-jaxb-without-a-code-generator

的原因有很多