【问题标题】:sun-jaxws.xml - When is it needed and when not?sun-jaxws.xml - 什么时候需要,什么时候不需要?
【发布时间】:2012-09-16 21:35:38
【问题描述】:

我对 JAX-WS 进行了高度概述,并注意到一些对 sun-jaxws.xml 的引用(以及 com.sun.xml.ws.transport.http.servlet.WSServletContextListenercom.sun.xml.ws.transport.http.servlet.WSServlet)。

在什么情况下需要这样做? (我认为是 JSR 109 服务器?!)

【问题讨论】:

标签: java web-services jax-ws


【解决方案1】:

sun-jaxws.xml 是使用 SUN 的参考实现将 Web 服务作为标准 WAR 归档部署在非 Java EE5 servlet 容器上时所需的专有部署描述符。

Sun 的 RI 使用 WSServletContextListener 作为 servlet 上下文事件的侦听器,WSServlet 作为调度程序 servlet;两者都必须在web.xml 中声明。然后需要sun-jaxws.xml 文件为WSServlet 定义Web 服务端点,以使其知道必须将服务请求分派到哪个端点。

通过这种方式,Web 服务可以在任何启用了JAX-WS RI 的 servlet 容器中运行,尽管它们不可移植。

符合 Java EE 5+ 的应用程序服务器(例如 Glassfish, the reference implementation,)符合 JSR 109 (Web services 1.2/1.3) 和 JSR 224 (JAX-WS 2.0/2.1/2.2),并且不需要非标准的 sun-jaxws.xml 部署描述符。

更多信息请看这里:

http://jax-ws.java.net/nonav/2.2.1/docs/UsersGuide.html#1.0_Introduction

http://www.ibm.com/developerworks/java/library/j-jws9/index.html

【讨论】:

  • 感谢您的回答。但是有一个问题,“非 Java EE5 servlet 容器”是什么意思?某个版本的 servlet api 还是什么?
  • 我不确定只有 servlet api 版本会有所不同;尽管它绝对很重要(例如注释支持)。我对“非 J2EE servlet 容器”的理解——就本文而言——是在 JBoss AS 7 等 J2EE 5+ 环境中,自动保证 JAX-WS 2.0 支持,但如果您需要在其他环境,例如遗留 servlet 容器,您仍然可以完成这项工作,这是一种选择。当然,今天还有其他一些不错的、甚至更好的实现(例如 Apache CFX)可供您选择。
  • @JohnDoDo - 这里是关于 servlet 容器和完整 Java EE 应用服务器之间区别的一种解释:stackoverflow.com/questions/17181292/…
  • 即使在 Glassfish Payara 4.1.1 中也需要 sun-jaxws.xml。所以我不明白你的回答。
  • 有什么方法可以在 sun-jaxws.xml 端点配置中指定端口?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
  • 2018-12-10
  • 2010-12-29
  • 2017-07-13
  • 2012-08-21
相关资源
最近更新 更多