IT源码网

服务端的思考讲解

sanshao 2021年06月07日 程序员 118 0

概述


我们思考发布一个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。可以在浏览器输入这个地址,浏览下其内容。但是我们还没有准备好对其进行解释。

客户端测试


 






发布评论

分享到:

IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

最简单的Web Service实现讲解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。