zoukankan      html  css  js  c++  java
  • WebService学习之旅(二)JAX-WS基于Web容器发布WebService

    在上节中我们定义Web服务接口和实现类后,调用Endpoint类的静态方法publish发布来webservice,这种方法使用起来虽然简单,但是对于一个企业级应用来说通常对外提供的服务可能不止一个,如果每个WebService都去编写一个main方法显然不合适,不利于Web服务的集中管理,而且不方便WebService与Web应用整合。
    所以绝大多数情况下都会使用Web容器集中管理WebService,本文將向大家介绍如何使用JAX-WS基于Web应用服务器来发布WebService。

    一、准备工作
    1.获取JAX-WS所需所有JAR包,如下图所示
    这里写图片描述

    所有jar包下载地址:
    http://download.csdn.net/detail/rongbo_j/9471877
    2.打开Eclipse,新建一个web工程,將上节中的WebService接口和实现类拷贝到src目录下。
    HelloWorld .java

    package com.csdn.jaxws.recipe01;
    
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    import javax.jws.soap.SOAPBinding.Use;
    
    @WebService
    @SOAPBinding(style = Style.DOCUMENT, use=Use.LITERAL)
    public interface HelloWorld {
        @WebMethod
        String sayHello(String text);
    }

    HelloWorldImpl.java

    package com.csdn.jaxws.recipe01;
    
    import javax.jws.WebService;
    
    @WebService(endpointInterface = "com.csdn.jaxws.recipe01.HelloWorld")
    public class HelloWorldImpl implements HelloWorld {
    
        @Override
        public String sayHello(String name) {
            return "hello," + name;
        }
    
    }
    

    3.將上面的jar包添加的classpath中,并发布到WEB-INF/lib目录下,接着在WEB-INF/web.xml文件中,添加如下内容:

        <listener>
            <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
        </listener>
    
        <servlet>
            <servlet-name>WSServlet</servlet-name>
            <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>WSServlet</servlet-name>
            <url-pattern>/service/*</url-pattern>
        </servlet-mapping>

    以/service/*结尾的Http请求会经过WSServlet处理,生成WebService及WSDL文档。
    4.接下来在WEB-INF目录下新建sun-jaxws.xml文件,配置内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <endpoints version="2.0"
        xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
    
        <endpoint name="HelloWorld" implementation="com.csdn.jaxws.recipe01.HelloWorldImpl"
            url-pattern="/service/HelloWorldService" />
    
    </endpoints> 

    5.使用jdk自带工具wsgen,生成webservice工具类,使用方法如下:
    打开控制台进入工程根目录下的buildclasses目录,输入命名

    wsgen -keep -cp . com.csdn.jaxws.recipe01.HelloWorldImpl

    將生成的类拷贝到jaxws子包下
    6.完整的工程结果如下图所示:
    这里写图片描述

    7.將应用部署到tomcat中,并启动web服务器,打开浏览器访问:http://localhost:8080/jax-recipe02/service/HelloWorldService?wsdl
    这里写图片描述

    8.客户端调用代码请参考上节示例。

  • 相关阅读:
    算法练习--ABCD*E=DCBA
    Android实现炫酷SVG动画效果
    swift -NavigationController,代理传值
    交换机的原理及其配置(一)
    NOI2015 题解
    实现存储过程详解
    数据流图(DFD)画法
    SQL SERVER 常用字符类型的区别
    数据库常见面试题集锦,数据库面试题,数据库练习题
    Django自定义模型(model)中的字段标签
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468277.html
Copyright © 2011-2022 走看看