WebService与RESTful WebService

Manual Instruction Document

 

Web Service

JAX-WS & JAX-RS

 

 

 

Author: Liu Xiang

Date: 2018/01/12


 

1. Summary....................................................................................................................... 1

2. JAX-WS.......................................................................................................................... 1

2.1 The common interface..................................................................................... 1

2.2 The functions.................................................................................................. 1

2.3 To call common JAX-WS.................................................................................... 4

2.4 To call private JAX-WS which released by ourself................................................. 7

2.5 Other common JAX-WS.................................................................................. 10

3. JAX-RS......................................................................................................................... 12

3.1 The common interface................................................................................... 12

3.2 The functions................................................................................................ 12

3.3 To call common JAX-RS................................................................................... 15

3.4 To call private JAX-RS which released by ourself................................................. 18

3.5 Other common JAX-RS................................................................................... 18

 


1. Summary

There are twotypes of Web Service.

JAX-WS, java apifor xml-based webservice.

JAX-RS, java apifor RESTful webservice.

2. JAX-WS

2.1 Thecommon interface

Jar name

WsClient.jar

Interface

package com.cn;

 

publicinterface WsClient {

public String getResult(StringapplyKey, Stringtype, String...message);

}

Parameters

Type

Name

Description

String

applyKey

User's Key, user's verification

String

type

The provided Web Service type name

String...

message

The input parameters

 

 

Return

Type

Description

String

The Web Service calling result

2.2The functions

2.2.1 Validations

2.2.1.2 CheckapplyKey

ToDo

2.2.1.2 Checktype

Check resource/resource.properties which key = support.type to verify if theincoming type is support or not.

2.2.2 Prepare Web ServiceRequest

Use the SOAP 1.2 templates in "/com/cn/resource/request/template/"to prepare the request message.

 

For example:

2.2.3 Get Web Service Response

To call the related WSDL(Web Services DescriptionLanguage) URL, get the response.

 

For example:

2.2.4 Parse the response

Use the related key word to get result node.

 

For example:

2.3 Tocall common JAX-WS

2.3.1 Validations

Pass.

2.3.2 To call the interface

Use below code to call 2.1 common method, to get"苏州"weather.

 

     WsClientwsClient =new WsClientImpl();

     System.out.println(wsClient.getResult("","weather","苏州",""));

2.3.3 Send the request SOAP 1.2request

<?xmlversion="1.0"encoding="utf-8"?>

<soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

 <soap12:Body>

   <getWeatherxmlns="http://WebXml.com.cn/">

     <theCityCode>苏州</theCityCode>

     <theUserID></theUserID>

   </getWeather>

 </soap12:Body>

</soap12:Envelope>

2.3.4 Get the response

<?xmlversion="1.0"encoding="utf-8"?>

<soap:Envelopexmlns:soap="http://www.w3.org/2003/05/soap-envelope"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <soap:Body>

   <getWeatherResponsexmlns="http://WebXml.com.cn/">

     <getWeatherResult>

        <string>江苏苏州</string>

        <string>苏州</string>

        <string>2004</string>

        <string>2018/01/1210:26:03</string>

        <string>今日天气实况:气温:0;风向/风力:北风 2级;湿度:31%</string>

        <string>紫外线强度:中等。空气质量:中。</string>

        <string>紫外线指数:中等,涂擦SPF大于15PA+防晒护肤品。健臻·血糖指数:易波动,血糖易波动,注意监测。感冒指数:较易发,天凉温差大,适当增减衣服。穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。洗车指数:较适宜,无雨且风力较小,易保持清洁度。空气污染指数:中,易感人群应适当减少室外活动。</string>

        <string>112</string>

        <string>-3/5</string>

        <string>西北风转东南风小于3</string>

        <string>0.gif</string>

        <string>0.gif</string>

        <string>113晴转多云</string>

        <string>-1/7</string>

        <string>东南风3-4</string>

        <string>0.gif</string>

        <string>1.gif</string>

        <string>114多云</string>

        <string>3/11</string>

        <string>东南风3-4</string>

        <string>1.gif</string>

        <string>1.gif</string>

        <string>115</string>

        <string>9/15</string>

        <string>东南风3-4</string>

        <string>2.gif</string>

        <string>2.gif</string>

        <string>116小雨</string>

        <string>7/16</string>

        <string>西北风3-4</string>

        <string>7.gif</string>

        <string>7.gif</string>

     </getWeatherResult>

   </getWeatherResponse>

 </soap:Body>

</soap:Envelope>

2.3.5 Parse the response

江苏苏州

        苏州

        2004

        2018/01/12 10:26:03

        今日天气实况:气温:0;风向/风力:北风 2级;湿度:31%

        紫外线强度:中等。空气质量:中。

        紫外线指数:中等,涂擦SPF大于15PA+防晒护肤品。健臻·血糖指数:易波动,血糖易波动,注意监测。感冒指数:较易发,天凉温差大,适当增减衣服。穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。洗车指数:较适宜,无雨且风力较小,易保持清洁度。空气污染指数:中,易感人群应适当减少室外活动。

        112

        -3/5

        西北风转东南风小于3

        0.gif

        0.gif

        113晴转多云

        -1/7

        东南风3-4

        0.gif

        1.gif

        114多云

        3/11

        东南风3-4

        1.gif

        1.gif

        115

        9/15

        东南风3-4

        2.gif

        2.gif

        116小雨

        7/16

        西北风3-4

        7.gif

        7.gif

2.4 Tocall private JAX-WS which released by ourself

2.4.1 Validations

Pass.

2.4.2 Release private JAX-WS

2.4.2.1 New project HelloFriend

 1. New java projectHelloFriend, New class MyService.java

package service;

 

publicclass MyService {

   public String getGreeting(Stringname)

   {

        return"您好 "+name;

   }

}

 

2. New META-INF folder and services.xml

 

services.xml

Service name is "myService", useRPC method

<servicename="myService">

   <description>

        WebService例子

   </description>

   <parametername="ServiceClass">

        service.MyService

   </parameter>

 

   <operationname="getGreeting">

       <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

   </operation>

</service>

 

3. Export the project to jar

      jar cvf ws.aar .

2.4.2.2 Use axis2 to releaseit to tomcat

1. Move 2.4.1.1 step 3 jar apache-tomcat-9.0.2webappsaxis2WEB-INFservices

 

2. Startup tomcat

3. Visit the private wsdl

 

2.4.3 To call the interface

        WsClientwsClient =new WsClientImpl();

         System.out.println(wsClient.getResult("","myservice","刘大人"));

2.4.4 Send the request SOAP 1.2request

<?xmlversion="1.0"encoding="utf-8"?>

<soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

 <soap12:Body>

   <getGreetingxmlns="http://service">

    <name>刘大人</name>

   </getGreeting>

 </soap12:Body>

</soap12:Envelope>

2.4.5 Get the response

<?xmlversion="1.0"encoding="utf-8"?>

<soapenv:Envelopexmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">

 <soapenv:Header/>

 <soapenv:Body>

   <ns:getGreetingResponsexmlns:ns="http://service">

     <ns:return>您好刘大人</ns:return>

   </ns:getGreetingResponse>

 </soapenv:Body>

</soapenv:Envelope>

2.4.6 Parse the response

您好刘大人

 

2.5 Othercommon JAX-WS

2.5.1 Attribution of mobilephones

        WsClientwsClient =new WsClientImpl();

         wsClient.getResult("","mobile","18662638888","");

                  ==>

        18662638888:江苏苏州江苏联通GSM

2.5.2 Flight inquiries

                  WsClientwsClient =new WsClientImpl();

         wsClient.getResult("","airline","上海","北京","2018-01-12","");

                  ==>

 

 2.5.3 Chinese/Englishtranslations

        WsClientwsClient =new WsClientImpl();

         wsClient.getResult("","englishswpchinese","airline","");

                  ==>

airline

             'e?lain

             

             adj. (飞机)航线的;n. (飞机的)航线,航空公司

             65562.mp3

           

             However short the journey is, you always get something to eat on thisairline.

             不管航程多麽短,这一班机上都有些吃的.           

           

             That was the worst airline disaster in history.

             那是历史上最严重的空难。           

           

             The timetable is obtainable post-free from the airline office.

             航班时刻表可以向航空公司免费索取。

 

 

        WsClientwsClient =new WsClientImpl();

         wsClient.getResult("","englishswpchinese","苏州","");

                  ==>

                            苏州        

             Suzhou (city)   

             soochow pladj.

             Suchou

             Soochow

           

             对不起,打扰了,请问坐火车去苏州该乘什么车?

             Excuse me, how can I go to suzhou by train?           

           

             一个孕妇把他从苏州河救了起来。

             A pregnant lady rescued him from the Suzhou River.           

           

             这是从这里去苏州的直达列车吗?

             Be this a through carriage for Suzhou from here?

3. JAX-RS

3.1The common interface

Jar name

RsClient.jar

Interface

package com.cn;

 

import java.util.Map;

 

public interface RsClient {

      public <K, V> String getResult(String applyKey, String httpType, String type, Map<K,V>  parameters, String... message);

}

Parameters

Type

Name

Description

String

applyKey

User's Key, user's verification

String

httpType

Http calling type, GET/POST/PUT/DELETE

String

type

The provided Web Service type name

Map<K,V>

parameters

httpType is POST, the related parameters

String…

message

The input parameters

 

 

Return

Type

Description

String

The RESTful Web Service calling result

3.2The functions

3.2.1 Validations

3.2.1.2 CheckapplyKey

ToDo

3.2.1.2 Checktype

Check resource/resource.properties which key = support.type to verify if theincoming type is support or not.

3.2.1.3 Check HTTPtype

Only support GET/POST/PUT/DELETE now.

3.2.2 Prepare RESTful WebService URL

Use the configured method and path to getthe correct URL.

 

For example

3.2.3 Get RESTful Web ServiceResponse

To call the related URL, get the response.

 

For example

 

3.2.4 Parse the response

Use the configured result key word to parseand format the result.

 

For example

 

3.3 Tocall common JAX-RS

3.3.1 Validations

       Pass.

3.3.2 Prepare RESTful WebService URL

Use the configured method and path to getthe correct URL.

 

For example

 

1. Get the base context path http://www.weather.com.cn/data/sk/

2. Use the method to get the pathInfogetWeatherPathInfo

 

Get city code 101190401 for苏州

3. If no "weather.path.info.method",use "weather.path.info.url" directly;

4.Get pathInfo suffix.

5. Get the final URL: http://www.weather.com.cn/data/sk/101190401.html

 

3.3.3 Get RESTful Web ServiceResponse

To call the related URL, get the response.

 

For example

{

    "weatherinfo":{

        "city":"苏州",

       "cityid":"101190401",

        "temp":"17",

        "WD":"东南风",

        "WS":"2",

        "SD":"44%",

        "WSE":"2",

        "time":"17:05",

        "isRadar":"0",

        "Radar":"",

        "njd":"暂无实况",

        "qy":"1017",

        "rain":"0"

    }

}

3.3.4 Parse the response

城市:苏州

温度:17

风向:东南风

风速:2

湿度:44%

发布时间:17:05

 

3.4 Tocall private JAX-RS which released by ourself

         TODO.

 

 

 

3.5 Othercommon JAX-RS

3.5.1 PM 2.5

        RsClientImplrsClient =new RsClientImpl();

         rsClient.getResult("","GET","pm2.5",null,"苏州");

                   ==>

3.5.2 O3

        RsClientImplrsClient =new RsClientImpl();

         rsClient.getResult("","GET","o3",null,"苏州");

                   ==>

 

 

 代码链接


 

 

 

 

 

 

 

 

 

 

 


博客地址:https://blog.csdn.net/xiang__liu,https://www.cnblogs.com/xiang--liu/
原文地址:https://www.cnblogs.com/xiang--liu/p/9710396.html