多么完整的JEE投诉容器不需要sun-jaxws.xml

时间:2018-11-26 12:26:09

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

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

考虑我们拥有这样的Web服务:

package client;

import javax.jws.WebService;

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

在weblogic和WAS中,我们可以使用以下仅在web.xml中的配置来创建JAX-WS Web服务,不!需要使用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       “类和侦听器无用

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

PS。我还知道在JEE 6中有一个新的组件javax.servlet.ServletContainerInitializer,但我想知道的是不同的东西。

1 个答案:

答案 0 :(得分:0)

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

如果您使用CXF而不是Sun的Jax-WS RI,那就是另一回事了。