Web Service--第一次接触web service


Web Service

首发于开源中国

1. 背景

  • 中国移动短信网关需求,要能够发送短信。开发材料只有一个短信发送配置:包括ID,password,code,url。一个jar包还有一个老旧的html帮助文档。
  • 最初将单个jar包加入工程,按照文档中new 一个对象,直接填入参数发送的来,以为就可以了。但是线上调试有null异常。之后一直在用该jar包调试,以为缺少依赖,于是在pom文件中加入了各种依赖,没跑一次就说缺class,终于不报缺calss错误了,还是有null异常。为此调试了好几次,还写了测试程序都不行。
  • 于是网上找材料,发邮件问部署短信服务的人,给的结论是:jar包老旧仅供参考,要使用web service自行开发。还给了一个比较新的html帮助文档。但是文档在win10下都打不开,还得再win7上才能看。于是就开始了web service的探索。
  • 还好网上搜到了一个网址,可以帮助理解,不然每次都得远程上线调试真是要命。

2. 基础知识

  • 该web service类似于:http://111.1.3.11:9080/OpenMasService
  • 该服务的主要内容是:http://111.1.3.11:9080/OpenMasService?wsdl
  • 于是参考: 使用命令wsimport构建WebService客户端 在线上执行以下命令:这里必须在线上运行,不然会报连接错误。而且这个命令也不是都能成功,很多不匹配的规范会导致不能解析。还好我这儿没出错。
 wsimport -keep -d ./ -s ./src -p com.james1 -verbose url或保存本地的wsdl文件
 于是生成本地文件,就是java的开发包了。
 └─james
        AddTask1.java
        AddTask1Response.java
        AddTask2.java
        AddTask2Response.java
        ArrayOfstring.java
        DayOfWeek.java
        GetMessage.java
        GetMessageResponse.java
        GetWaitSmsMessageCount.java
        GetWaitSmsMessageCountResponse.java
        ISms.java
        ObjectFactory.java
        package-info.java
        PeriodTime.java
        PeriodType.java
        PeriodValue.java
        RemoveMessage.java
        RemoveMessageResponse.java
        RemoveTask.java
        RemoveTaskResponse.java
        SendMessage3.java
        SendMessage3Response.java
        SendMessage4.java
        SendMessage4Response.java
        SendWapPush1.java
        SendWapPush1Response.java
        SendWapPush2.java
        SendWapPush2Response.java
        SmsImplementation.java
        SmsMessage.java
  • 这样在java工程中调用SmsImplementation.java即可:
String result = smsImplementation.getBasicHttpBindingISms().sendMessage3(address,message,extendCode,applicationID,password);
  • 对于自定义web service服务参考材料:
    • Web Service笔记(二):利用CXF开发Web Service 里面有简单例子
    • Web Service学习笔记(webservice、soap、wsdl、jws详细分析) 里面有简单的例子
  • 公共开放WebService接口:http://blog.csdn.net/yixiaoping/article/details/16877623

3. 打jar包

  • 参考:Java中打jar包的方法
  • 查看jar包中的内容:
jar tvf target/myproject-0.0.1-SNAPSHOT.jar
  • 创建jar包
jar cvf 打成的jar包的名字 (一个或者多个)class文件或者文件夹