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/

  • 相关阅读:
    JS面试题(一)
    cookie、locakstorage、sessionstorage的区别
    BOM操作
    DOM表单(复选框)
    DOM表格操作
    Javascript的组成——EMACScript、DOM、BOM
    scrollto 到指定位置
    编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。
    使用bluebird解决promise兼容性问题
    Mac 更改/usr/bin 目录权限失败
  • 原文地址:https://www.cnblogs.com/xiaotao726/p/4522955.html
Copyright © 2011-2022 走看看