gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:24:30 25 4
gpt4 key购买 nike

请考虑我的问题基于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com