tomcat - 完整的 JEE 投诉容器如何不需要 sun-jaxws.xml

标签 tomcat servlets jakarta-ee weblogic java-ee-5

请考虑我的问题基于 JEE 5 和 JDK 7,Web 服务器是 tomcat 6;

假设我们有这样一个网络服务:

package client;

import javax.jws.WebService;

@WebService
public class RetroQuery {
    public List<RetroQueryOutput> retroQuery(RetroQueryInput req) throws Exception {
    }
}

在 weblogic 和 WAS 中,我们可以创建一个 JAX-WS web 服务,只需在 web.xml 中进行以下配置,不行!需要使用 sun-jaxws.xml 文件。

<servlet>
    <servlet-name>RetroQueryPort</servlet-name>
    <servlet-class>client.RetroQuery</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>RetroQueryPort</servlet-name>
    <url-pattern>/RetroQueryPort</url-pattern>
</servlet-mapping>

但在 web 容器中,我们需要使 web.xml 有点不同,如下所示:

<listener>
      <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener>
<servlet>
    <servlet-name>RetroQueryService</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
    <servlet-mapping>
    <servlet-name>RetroQueryService</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

除此之外,我们还需要一个名为 sun-jaxws.xml 的文件,内容如下:

<endpoint name='RetroQuery' implementation='client.RetroQuery' url-pattern='/RetroQueryPort' />

问题 1:JEE 5(weblogic 或 WAS)中的什么组件/标准使“com.sun.xml.ws.transport.http.servlet.WSServlet "class 和 listener 没用

问题二: 为什么 Web 服务器 (tomcat 6) 在没有使用“com.sun.xml.ws.transport.http.servlet.WSServlet”设置 servlet 类并且没有放置这个 sun-jaxws.xml 文件的情况下无法工作

附言。我也知道 JEE 6 中有一个新组件 javax.servlet.ServletContainerInitializer但我想知道的是不同的东西。

最佳答案

Jax-WS 是 Sun 用于创建/实现/调用 Web 服务的引用实现。 要在非 JEE 环境中使用 Jax-WS,您需要 sun-jaxws.xml 部署描述符。 更多详情 here

如果您使用 CXF 而不是 Sun 的 Jax-WS RI,情况就不同了。

关于tomcat - 完整的 JEE 投诉容器如何不需要 sun-jaxws.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53481103/

相关文章:

java - 在 Java servlet 中调试 init() 方法

java - 在 jsf 中找不到类型的属性

java - 一起使用 jfree 和 itext 时,无法将响应的内容处置设置为附件

eclipse - 访问 {workspace-directory}/.metadata/.plugins/org.eclipse.core.runtime/.settings。在苹果系统中

java - Wildfly Jboss NoClassDefFoundError : Failed to link Error for org/jboss/ws/core/jaxws/spi/ProviderImpl

java - HttpSession 和 JBoss。 session 超时有什么影响?

java - 获取 HttpSession|来自简单 java 类而不是 servlet 类的请求

java - 向 java maven 项目添加新组件

java - Tomcat保存文件出现异常

spring - HazelCast IMap.values() 在 Tomcat 上给出 OutofMemory