zoukankan      html  css  js  c++  java
  • 服务端的思考

    概述


    我们思考发布一个web服务需要做的工作,并进行职责的划分。

    职责的划分


    通常我们会先制定抽象的接口,然后根据接口构造实现类。接口和实现类都完成了,再实施发布。所以,服务端的角色可以划分为:服务接口服务实现服务发布者

    服务端的实现


    功能:将阿拉伯数字转换成中文数字序列。

    服务接口

    package cn.ljl.sand.jws.chapter1.service;
     
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
     
    @WebService
    public interface InterpretService {
      @WebResult(name = "chnum") // 默认的result的name是return
      public String interpret(
           @WebParam(name = "num")/* 默认的参数名是arg0, arg1... */int num);
    }

    注意:

    1. WebResult注解
      用以指定返回结果的名称,不指定则默认为return
    2. WebParam注解
      用以指定参数的名称,不指定则默认为arg0, arg1...

    服务实现类

    package cn.ljl.sand.jws.chapter1.service;
     
    import javax.jws.WebService;
     
    @WebService(endpointInterface = "cn.ljl.sand.jws.chapter1.service.InterpretService")
    public class InterpretServiceImpl implements InterpretService {
      public static final String[] CH_NUMS = // 强制格式化换行
      { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
     
      @Override
      public String interpret(int num) {
        StringBuilder builder = new StringBuilder(Integer.toString(num)
            .length());
        for (int digit = num % 10; num > 0; num = num / 10, digit = num % 10) {
          builder.append(CH_NUMS[digit]);
        }
     
        builder.reverse();
        return builder.toString();
      }
    }
    注意:
    1. 服务实现类也需要用WebService进行注解,并且以endpointInterface指定所继承的接口。
    2. 默认生成的代码可能会生成WebResult、WebParam的注解内容,但是这些不是必要的。

    服务发布者

    package cn.ljl.sand.jws.chapter1.service;
     
    import javax.xml.ws.Endpoint;
     
    public class InterpretServicePublisher {
      public static void main(String[] args) {
        String address = "http://localhost:6666/service/interpret";
        InterpretService service = new InterpretServiceImpl();
        Endpoint.publish(address, service);
      }
    }
    根据代码可知,wsdl的URL是http://localhost:6666/service/interpret?wsdl。可以在浏览器输入这个地址,浏览下其内容。但是我们还没有准备好对其进行解释。

    客户端测试


     





  • 相关阅读:
    pydev 下Django 1.7 undefined variables from import问题的解决
    前端CDN公共库整理
    BugFix:URL or HTTP headers are too long (IP=127.0.0.1)
    目前最好用的软件下载网站
    mysql数据库优化之表的设计和慢查询定位
    Hadoop-08-Hive本地独立式安装
    AspNetPager真假分页对照实例
    Android从无知到有知——NO.6
    Xpath—解决这个问题的良药
    C# Json反序列化 数据协定类型 无法反序列化 由于未找到必需的数据成员
  • 原文地址:https://www.cnblogs.com/ywjy/p/5153203.html
Copyright © 2011-2022 走看看