• 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/

  • 相关阅读:
    [翻译]windows下 连接到 bitnami的phpmyadmin
    Redmine 和GitBlit仓库服务器整合
    Xshell出现要继续使用此程序必须应用到最新的更新或使用新版本
    Codeigniter 列出所有控制器和控制器的方法(类似路由列表)
    FastStone Capture 文件名设置小记录
    [转]sourceforge文件下载过慢
    Cacti 添加 CPU 监听
    Cacti 发送警告邮件
    尝试让Virtualbox的Ubuntu可以调整分辨率
    Html5+离线打包创建本地消息
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/4522955.html
Copyright © 2020-2023  润新知