zoukankan      html  css  js  c++  java
  • WebService基本使用

    不使用任何框架,纯粹使用JDK开发一个服务端与客户端

    • 服务端

    package org.zln.ws.server;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.zln.ws.server.domain.User;

    import javax.jws.WebService;

    /**
    * Created by sherry on 16/12/15.
    */
    @WebService
    public class UserService {

    /**
    * 日志
    */
      private Logger logger = LoggerFactory.getLogger(UserService.class);

      public User getUser(User user) {
        logger.debug("收到查询参数:" + user);
        return new User();
      }

    }

    将需要保留服务的类,添加@WebService注解即可

    然后将服务发布出去

    package org.zln.ws.server;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import javax.xml.ws.Endpoint;

    /**
    * Created by sherry on 16/12/15.
    */
    public class Main {

    /**
    * 日志
    */
    private static Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
    Endpoint.publish("http://localhost:8080/Service/UserService",new UserService());
    logger.debug("Service服务发布成功");
    }

    }




    如果在浏览器地址中,能够访问指定的URL,就说明发布成功,这里是 http://localhost:8080/Service/UserService?wsdl
    • 客户端

    首先使用 wsimport 命令生成代码,命令的使用方法参见

    用法: wsimport [options] <WSDL_URI>
    
    其中 [options] 包括:
      -b <path>                 指定 jaxws/jaxb 绑定文件或附加模式
                                (每个 <path> 都必须具有自己的 -b)
      -B<jaxbOption>            将此选项传递给 JAXB 模式编译器
      -catalog <file>           指定用于解析外部实体引用的目录文件
                                支持 TR9401, XCatalog 和 OASIS XML 目录格式。
      -d <directory>            指定放置生成的输出文件的位置
      -encoding <encoding>      指定源文件所使用的字符编码
      -extension                允许供应商扩展 - 不按规范
                                指定功能。使用扩展可能会
                                导致应用程序不可移植或
                                无法与其他实现进行互操作
      -help                     显示帮助
      -httpproxy:<host>:<port>  指定 HTTP 代理服务器 (端口默认为 8080)
      -keep                     保留生成的文件
      -p <pkg>                  指定目标程序包
      -quiet                    隐藏 wsimport 输出
      -s <directory>            指定放置生成的源文件的位置
      -target <version>         按给定的 JAXWS 规范版本生成代码
                                默认为 2.2, 接受的值为 2.0, 2.1 和 2.2
                                例如, 2.0 将为 JAXWS 2.0 规范生成兼容的代码
      -verbose                  有关编译器在执行什么操作的输出消息
      -version                  输出版本信息
      -wsdllocation <location>  @WebServiceClient.wsdlLocation 值
      -clientjar <jarfile>      创建生成的 Artifact 的 jar 文件以及
                                调用 Web 服务所需的 WSDL 元数据。
      -generateJWS              生成存根 JWS 实现文件
      -implDestDir <directory>  指定生成 JWS 实现文件的位置
      -implServiceName <name>   生成的 JWS 实现的服务名的本地部分
      -implPortName <name>      生成的 JWS 实现的端口名的本地部分
    
    扩展:
      -XadditionalHeaders              映射标头不绑定到请求或响应消息不绑定到
                                       Java 方法参数
      -Xauthfile                       用于传送以下格式的授权信息的文件: 
                                       http://username:password@example.org/stock?wsdl
      -Xdebug                          输出调试信息
      -Xno-addressing-databinding      允许 W3C EndpointReferenceType 到 Java 的绑定
      -Xnocompile                      不编译生成的 Java 文件
      -XdisableAuthenticator           禁用由 JAX-WS RI 使用的验证程序,
                                       将忽略 -Xauthfile 选项 (如果设置)
      -XdisableSSLHostnameVerification 在提取 wsdl 时禁用 SSL 主机名
                                       验证
    
    示例:
      wsimport stock.wsdl -b stock.xml -b stock.xjb
      wsimport -d generated http://example.org/stock?wsdl
    View Code

    调用如下

    package org.zln.ws.client;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.zln.ws.server.User;
    import org.zln.ws.server.UserService;
    import org.zln.ws.server.UserServiceService;

    /**
    * Created by sherry on 16/12/15.
    */
    public class Main {
    /**
    * 日志
    */
    private static Logger logger = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
    //wsimport -s 目录 ws地址
    UserService userService = new UserServiceService().getUserServicePort();
    User user = new User();
    User user1 = userService.getUser(user);
    logger.debug("user:"+user1);
    }
    }
  • 相关阅读:
    MySQL用户权限管理
    索引 聚集索引 唯一索引 普通索引 联合索引 覆盖索引
    sql注入
    pymysql
    MySQL 多表查询
    MySQL 聚合函数以及 优先级
    mysql 语句 字段 和结构主键外键的增删改
    协程
    事件 event
    进程池和线程池 concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/sherrykid/p/6254054.html
Copyright © 2011-2022 走看看