JAX-WS & JAX-RS

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

There are twotypes of Web Service.

JAX-WS, java apifor xml-based webservice.

JAX-RS, java apifor RESTful webservice.

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.2.1 Validations

2.2.1.2 CheckapplyKey

ToDo

WebService与RESTful WebService-LMLPHP

2.2.1.2 Checktype

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

WebService与RESTful WebService-LMLPHP

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:

WebService与RESTful WebService-LMLPHP

2.2.3 Get Web Service Response

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

For example:

WebService与RESTful WebService-LMLPHP

2.2.4 Parse the response

Use the related key word to get result node.

For example:

WebService与RESTful WebService-LMLPHP

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>

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

级;湿度:31%</string>

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

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

日晴</string>

<string>-3℃/5℃</string>

级</string>

<string>0.gif</string>

<string>0.gif</string>

日晴转多云</string>

<string>-1℃/7℃</string>

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

<string>0.gif</string>

<string>1.gif</string>

日多云</string>

℃/11℃</string>

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

<string>1.gif</string>

<string>1.gif</string>

日阴</string>

℃/15℃</string>

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

<string>2.gif</string>

<string>2.gif</string>

日小雨</string>

℃/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

级;湿度:31%

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

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

日晴

-3℃/5℃

0.gif

0.gif

日晴转多云

-1℃/7℃

东南风3-4级

0.gif

1.gif

日多云

3℃/11℃

东南风3-4级

1.gif

1.gif

日阴

9℃/15℃

东南风3-4级

2.gif

2.gif

日小雨

7℃/16℃

西北风3-4级

7.gif

7.gif

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

WebService与RESTful WebService-LMLPHP

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.2\webapps\axis2\WEB-INF\services

WebService与RESTful WebService-LMLPHP

2. Startup tomcat

3. Visit the private wsdl

WebService与RESTful WebService-LMLPHP

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.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","");

==>

WebService与RESTful WebService-LMLPHP

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?

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.2.1 Validations

3.2.1.2 CheckapplyKey

ToDo

WebService与RESTful WebService-LMLPHP

3.2.1.2 Checktype

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

WebService与RESTful WebService-LMLPHP

3.2.1.3 Check HTTPtype

Only support GET/POST/PUT/DELETE now.

WebService与RESTful WebService-LMLPHP

3.2.2 Prepare RESTful WebService URL

Use the configured method and path to getthe correct URL.

For example

WebService与RESTful WebService-LMLPHP

3.2.3 Get RESTful Web ServiceResponse

To call the related URL, get the response.

For example

WebService与RESTful WebService-LMLPHP

3.2.4 Parse the response

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

For example

WebService与RESTful WebService-LMLPHP

3.3.1 Validations

Pass.

3.3.2 Prepare RESTful WebService URL

Use the configured method and path to getthe correct URL.

For example

WebService与RESTful WebService-LMLPHP

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

2. Use the method to get the pathInfogetWeatherPathInfo

WebService与RESTful WebService-LMLPHP

Get city code for苏州

WebService与RESTful WebService-LMLPHP

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

4.Get pathInfo suffix.

WebService与RESTful WebService-LMLPHP

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.

WebService与RESTful WebService-LMLPHP

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

TODO.

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,"苏州");

==>

WebService与RESTful WebService-LMLPHP

代码链接

04-06 00:40