完整的 JEE 投诉容器如何不需要 sun-jaxws.xml
how full JEE complaint container do not need sun-jaxws.xml
请根据 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)中的 conponent/standart 是什么使得“com.sun.xml.ws.transport.http.servlet.WSServlet
" class 和听众没用
问题二:
为什么 Web 服务器 (tomcat 6) 在没有使用 "com.sun.xml.ws.transport.http.servlet.WSServlet" 设置 servlet class 并且没有放置这个 sun-jaxws.xml 文件
的情况下无法工作
PS。我也知道在 JEE 6 中有一个新组件 javax.servlet.ServletContainerInitializer 但我想知道的是不同的东西。
Jax-WS 是 Sun 针对 creating/implementing/calling Web 服务的参考实现。
要在非 JEE 环境中使用 Jax-WS,您需要 sun-jaxws.xml
个部署描述符。
更多详情 here
如果使用 CXF 而不是 Sun 的 Jax-WS RI,情况就不同了。
请根据 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)中的 conponent/standart 是什么使得“com.sun.xml.ws.transport.http.servlet.WSServlet " class 和听众没用
问题二: 为什么 Web 服务器 (tomcat 6) 在没有使用 "com.sun.xml.ws.transport.http.servlet.WSServlet" 设置 servlet class 并且没有放置这个 sun-jaxws.xml 文件
的情况下无法工作PS。我也知道在 JEE 6 中有一个新组件 javax.servlet.ServletContainerInitializer 但我想知道的是不同的东西。
Jax-WS 是 Sun 针对 creating/implementing/calling Web 服务的参考实现。
要在非 JEE 环境中使用 Jax-WS,您需要 sun-jaxws.xml
个部署描述符。
更多详情 here
如果使用 CXF 而不是 Sun 的 Jax-WS RI,情况就不同了。