zoukankan      html  css  js  c++  java
  • JAX-WS 学习二:基于WEB容器,发布WebService

    WebService 的发布通过调用

    Endpoint.publish()  
    

      方法来启动一个java内嵌的WEB容器来实现的,如果要将WebService部署到一个WEB容器中去,需要使用jax-ws提供的jar包,演示项目中使用的是最新的jax-ws的jar

          https://jax-ws.java.net/2.2.10/   可以在此进行下载。

    实现方式:

    sun的jax-ws实现提供了两个类用来配置web容器的web.xml,实现从url到web service实现类的映射:

    • 监听类:com.sun.xml.ws.transport.http.servlet.WSServletContextListener
    • Servlet: com.sun.xml.ws.transport.http.servlet.WSServlet

    其中WSServletContextListener又会去查找和web.xml在同一级目录下的另一个文件sun-jaxws.xml

    过程流程图为:

    过程流程图

    sun-jaxws.xml 文件

    <?xml version="1.0" encoding="UTF-8"?>
    
    <endpoints xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
        version="2.0">
         <!--name:service 名称   implementation:服务的实现类-->
    <endpoint name="calculator" implementation="com.st.services.CalculatorService" url-pattern="/service/calculator" /> <endpoint name="fileService" implementation="com.st.services.FileService" url-pattern="/service/fileService" /> </endpoints>

    web.xml 文件

        <listener>
            <listener-class>
                    com.sun.xml.ws.transport.http.servlet.WSServletContextListener
            </listener-class>    
        </listener>
        <servlet>
            <servlet-name>webService</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>webService</servlet-name>
            <url-pattern>/service/*</url-pattern>
        </servlet-mapping>
     

    按照上面的流程图就可以很清楚的理解了:

     在初始化期间,WSServletContextListener会读取WEB-INF目录下的 sun-jaxws.xml和web.xml,将web service的实现类与某个url进行绑定,这个绑定是通过一个WSServlet类间接进行的。每次来一个请求后,WSServletContextListener就会进行拦截,根据请求的url,找到对应的web service的实现,调用其他方法。

    依赖包

    很显然,诸如 WSServletContextListener 和 WSServlet 类并不是java缺省自带的。这些类在下载的jax-ws RI的lib目录下的jar里,所以要想真正成功的运行这些web service,我们也需要把必需的依赖包加上,它们包括:

    • gmbal-api-only.jar
    • ha-api.jar
    • jaxb-impl.jar
    • jaxws-api.jar
    • jaxws-rt.jar
    • management-api.jar
    • policy.jar
    • stax-ex.jar
    • streambuffer.jar
    • mimepull.jar  (处理文件的时候需要使用到)

    启动服务器,便可通过浏览器去访问  http://localhost:8080/jaxws/service/calculator   (我使用的是Tomcat服务器,端口8080,系统名称为jaxws)

    参考http://www.mkyong.com/webservices/jax-ws/deploy-jax-ws-web-services-on-tomcat/

  • 相关阅读:
    【十大思想实验之中的一个】电车难题
    XMLHTTP使用具体解释
    高速排序 解析
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    java设计模式演示样例
    [Network]Transport Layer
    【2012.1.24更新】不要再在网上搜索eclipse的汉化包了!
    WebService究竟是什么?
    epoll使用具体解释(精髓)
    贪心算法
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/4522955.html
Copyright © 2011-2022 走看看