The MM7 RA supports the MM7 interface, for SLEE MM7 services that may act as a VASP or a Relay Server, as specified in the 3GPP Technical Specification 23.140.

Topics

Package contents

How to navigate through RA package contents

Configuring the resource adaptor

How to configure the resource adaptor

Managing the resource adaptor

How to use tracing and monitor statistics

Running the example service

How to install and run the example services for the MM7 Resource Adaptor

Other documentation for the MM7 Resource Adaptor can be found on the MM7 Resource Adaptor product page.

Package contents

The MM7 package contains:

Folder What it contains

du/

Deployable units:

  • mm7-types.du.jar — MM7 library containing common datatypes used by both VASP and RS resource adaptors

  • mm7-events.du.jar — MM7 event types generated and consumed by both VASP and RS resource adaptors

  • mm7-rs-resource-adaptor-type.du.jar — RS RA type

  • mm7-vasp-resource-adaptor-type.du.jar — VASP RA type

  • mm7-rs-resource-adaptor.du.jar — RS RA implementation

  • mm7-vasp-resource-adaptor.du.jar — VASP RA implementation

lib/

Compilation dependencies

docs/

API documentation

examples/

Example services

Configuring the resource adaptor

MM7 Resource Adaptor configuration properties

To configure MM7 resource adaptor entities, use the following types of resource adaptor configuration properties:

  • transport layer configuration

  • common MM7 configuration (applicable to both VASP and RS resource adaptors)

  • configuration specific to the VASP resource adaptor

  • configuration specific to the RS resource adaptor

Transport layer
Name Type Description Default value Active reconfig?

IncomingIdleTimeout

long

Time, in milliseconds, to wait before closing down an idle connection.
This should be greater than the idle timeout on the client side so that the client initiates the teardown.

60000

Yes

IncomingRequestTimeout

long

Time, in milliseconds, to wait for a response to each incoming request before generating a 503 Service Timeout.
This should be less than the request timeout on the client side, so that the server responds with an error before the client tears down the connection.

5000

Yes

LocalAddress

String

IP address to which MM7 resource adaptor binds to listen for incoming messages.

0.0.0.0

No

LocalPort

long

Port on which MM7 resource adaptor listens for incoming messages.

33231

No

MaxContentLength

long

The maximum content-length of messages received on a connection.

262144

Yes

MaxDepth

long

The maximum number of active requests on a single connection (pipelining).

5

Yes

MaxOutgoingConnections

long

The maximum number of concurrent connections allowed to a single destination address.

5

Yes

OutgoingIdleTimeout

long

Time, in milliseconds, to wait before closing down an idle connection.
This should be less than the idle timeout on the server side so that the client initiates the teardown.

60000

Yes

QueueTimeout

long

The time, in milliseconds, to wait for an available outgoing connection before rejecting a request.

5000

Yes

ReconnectTimeout

long

The time, in milliseconds, to wait before opening a new connection.
This is to prevent large numbers of connections being created for a burst of outgoing requests.
Set this to zero if sending requests to a server that does not support persistent connections.

1500

Yes

Common MM7 RA
Name Type Description Default value Active reconfig?

OutgoingMM7Version

String

The MM7 version used in the requests initiated by resource adaptor.

6.8.0

Yes

SupportUnknownMM7VersionAs

String

The MM7 version used to decode requests encoded using an unknown MM7 schema/version. Request with unknown version will be validated as this configured version, and also response will be generated using this configured version.

6.8.0

Yes

Quirks

String

Comma separated list of strings enabling non-standard behaviour. Currently only one string is supported 'ericsson'. If it is set then:

  • MM7 error messages are transported with HTTP status code 200 instead of 500

  • Tags VASPID and VASID are present in outgoing messages even if their values are not defined

  • Milliseconds are never included in any timestamps

  • Uses attachment as content

  • Ericsson specific parsing of Content-ID value is used

No

ValidatingParser

boolean

Flag indicating if XSD schema validation have to be applied to all incoming requests

false

No

VASP RA
Name Type Description Default value Active reconfig?

VASID

String

Value of attribute VASID in outgoing messages CancelReq, ExtendedCancelReq, ReplaceReq, ExtendedReplaceReq and SubmitReq used when parameter VASID is not passed to RA from the service.

Yes

VASPID

String

Value of attribute VASPID in outgoing messages CancelReq, ExtendedCancelReq, ReplaceReq, ExtendedReplaceReq and SubmitReq used when parameter VASPID is not passed to RA from the service.

Yes

SenderAddress

String

Value of attribute SenderAddress in outgoing messages CancelReq, ExtendedCancelReq, ReplaceReqd SubmitReq used when parameter SenderAddress is not passed to RA from the service.

Yes

RS RA
Name Type Description Default value Active reconfig?

MMSRelayServerID

String

Identifier or relay server used in outgoing messages DeliverReq, DeliveryReportReq and ReadReplyReportReq when relay server identifier is not passed to RA from the service

Yes

Managing the resource adaptor

Enabling and disable tracing, and monitoring statistics

MM7 RA management includes:

  • Enabling and disabling tracing — The resource adaptors have several standard tracers, whose trace levels can be modified using the Rhino management tools.

  • Monitoring statistics — Both VASP and RS resource adaptors create several statistic parameter sets that can be monitored using the rhino-stats tool.

Monitoring statistics

The root parameter set is different for VASP and RS resource adaptors:

  • MM7_VASP.entity-name and has four child parameter sets: http.client, http.server, mm7.client and mm7.server.

  • MM7_RS.entity-name and has four child parameter sets: http.client, http.server, mm7.client and mm7.server.

  • Parameter sets http.client and http.server have transport layer statistics. A dedicated parameter set is created as child of http.client for each outgoing connection used by RA entity. There is always one parameter set http.server per RA entity.

  • The mm7.client and mm7.server parameter sets have MM7 statistics. A dedicated parameter set is created as child of mm7.client or mm7.server per each MM7 message type and one parameter set for messages that can not be recognised.

A list of statistics with descriptions for each parameter set — http.client, http.server, mm7.client, and mm7.server — can be displayed with the rhino-stats -l command:

http.client parameter set
Parameter Set: MM7_RS.rsra.http.client
Parameter Set Type: ResourceAdaptorID[name=MM7-REL-6-RS,vendor=OpenCloud,version=2.1].HTTP.ClientStats
Description: HTTP MM7 ra client statistics

Counter type statistics:
Id: Name: Label: Description:
0 connectionsOpened connOp Number of HTTP connections opened
1 connectionsClosed connCl Number of HTTP connections closed
2 connectionsActive connActive Current number of HTTP connections to the server
3 requestsActive reqActive Current number of HTTP requests in progress
4 requestsTimedOut reqTmOut Number of HTTP requests timed out
5 errorsRx errRx Number of I/O or HTTP protocol errors when receiving messages
6 errorsTx errTx Number of I/O errors when sending messages
7 bytesRx bytesRx Number of bytes received
8 bytesTx bytesTx Number of bytes sent
9 connectionsRejected connRej Number of connections rejected
10 requestsQueued reqQ Current number of requests queued waiting for a connection
11 requestsSent reqTx Number of HTTP requests sent
12 responsesReceived resRx Number of HTTP responses received

Sample type statistics:
Id: Name: Label: Description:
13 responseTime rtt Time taken to receive a response to an HTTP request
http.server parameter set
Parameter Set: MM7_RS.rsra.http.server
Parameter Set Type: ResourceAdaptorID[name=MM7-REL-6-RS,vendor=OpenCloud,version=2.1].HTTP.ServerStats
Description: HTTP MM7 RA server statistics

Counter type statistics:
Id: Name: Label: Description:
0 connectionsOpened connOp Number of HTTP connections opened
1 connectionsClosed connCl Number of HTTP connections closed
2 connectionsActive connActive Current number of HTTP connections to the server
3 requestsActive reqActive Current number of HTTP requests in progress
4 requestsTimedOut reqTmOut Number of HTTP requests timed out
5 errorsRx errRx Number of I/O or HTTP protocol errors when receiving messages
6 errorsTx errTx Number of I/O errors when sending messages
7 bytesRx bytesRx Number of bytes received
8 bytesTx bytesTx Number of bytes sent
9 requestsReceived reqRx Number of HTTP requests received
10 responsesSent resTx Number of HTTP responses sent

Sample type statistics:
Id: Name: Label: Description:
11 responseTime rtt Time taken to generate a response to an HTTP request
mm7.client parameter set
Parameter Set: MM7_RS.rsra.mm7.client
Parameter Set Type: ResourceAdaptorID[name=MM7-REL-6-RS,vendor=OpenCloud,version=2.1].MM7.ClientStats
Description: MM7 RA client statistics

Counter type statistics:
Id: Name: Label: Description:
0 decodingFailed decFail Number of failed decoding attempts
1 encodingFailed encFail Number of failed encoding attempts
2 requestsOut reqOut Number of requests sent
3 responsesIn rspIn Number of responses received

Sample type statistics:
Id: Name: Label: Description:
4 decodingTime decTime Time taken to decode MM7 response
5 encodingTime encTime Time taken to encode MM7 request
mm7.server parameter set
Parameter Set: MM7_RS.rsra.mm7.server
Parameter Set Type: ResourceAdaptorID[name=MM7-REL-6-RS,vendor=OpenCloud,version=2.1].MM7.ServerStats
Description: MM7 RA server statistics

Counter type statistics:
Id: Name: Label: Description:
0 decodingFailed decFail Number of failed decoding attempts
1 encodingFailed encFail Number of failed encoding attempts
2 requestsIn reqIn Number of requests received
3 responsesOut rspOut Number of responses sent

Sample type statistics:
Id: Name: Label: Description:
4 decodingTime decTime Time taken to decode MM7 request
5 encodingTime encTime Time taken to encode MM7 response

Running the example services

OK, and Weather Forecasting as VASP

MM7 examples include two services:

  • MM7 OK Service — Processes all types of MM7 events, demonstrating how to receive MM7 requests. For each received event, it generates a response indicating success. It uses both VASP and RS resource adaptors to act as both VASP and RS.

  • MM7 Weather Forecasting Service acting as VASP — Receives a DeliverReq message and generates a DeliverRes response, depending on the incoming request.

Building and deploying the examples

The build file defines targets to both deploy and undeploy the examples and all dependencies. ant -p will display a list:

Main targets:

 clean                    Remove compiled class and jar files
 deploy-mm7forecasting    Deploy MM7 forecasting service
 deploy-mm7ok             Deploy example MM7 OK Service
 deploy-rsra              Deploy MM7 Relay/Server RA
 deploy-vaspra            Deploy MM7 VASP RA
 undeploy-mm7forecasting  Undeploy MM7 forecasting service
 undeploy-mm7ok           Undeploy example MM7 OK Service
 undeploy-rsra            Undeploy MM7 Relay/Server RA
 undeploy-vaspra          Undeploy MM7 VASP RA
Running the MM7 Forecasting example service

To run the MM7 Forecasting example service:

1

Unzip the downloaded RA package and go to examples/.

2

Edit build.properties:

  • client.home must point to the client directory of a running Rhino instance.

  • common.localaddress and vasp.localport specify the address and port the MM7 VASP RA will attempt to listen on when it is activated. (The defaults are 0.0.0.0 (all interfaces) and port 2885.)

3

Deploy the MM7 Forecasting example:

  • Run the deploy-mm7forecasting target in the supplied Ant build file. This will deploy the MM7 VASP resource adaptor and the example MM7 service.

4

Send an MM7 request:

  • Use the send-request.xml Ant build file to compile and run the provided NetworkSender tool.

  • Run one of ask-weather-help, ask-weather-wgtn or ask-weather-all targets to send one of the provided template messages (src/com/opencloud/slee/tools/messages) representing an MM7 deliver request.

    ant -f send-request.xml ask-weather-help

    Example output:

    run-template:
    [java] Sending request to sbb:
    [java] POST /mms/weather.xml HTTP/1.1
    [java] host: opencloud.com
    [java] Content-Type: multipart/related; boundary="NextPart_000_0125_01C19839.7237929064"; type="text/xml"; start="</cmvt256/mm7-deliver>"
    [java] SOAPAction: ""
    [java] Connection: close
    [java]
    [java] --NextPart_000_0125_01C19839.7237929064
    [java] Content-Type:text/xml; charset="utf-8"
    [java] Content-ID: </cmvt256/mm7-deliver>
    [java]
    [java] <?xml version="1.0"?>
    [java] <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    [java] <env:Header>
    [java] <mm7:TransactionID xmlns:mm7="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" env:mustUnderstand="1">wlg1</mm7:TransactionID>
    [java] </env:Header>
    [java] <env:Body>
    [java] <DeliverReq xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">
    [java] <MM7Version>5.3.0</MM7Version>
    [java] <Sender>
    [java] <RFC2822Address>97254265781@OMMS.com</RFC2822Address>
    [java] </Sender>
    [java] <Priority>Normal</Priority>
    [java] <Subject>forecast</Subject>
    [java] <Content href="cid:forecast-location2000102-86453"/>
    [java] </DeliverReq>
    [java] </env:Body>
    [java] </env:Envelope>
    [java]
    [java] --NextPart_000_0125_01C19839.7237929064
    [java] Content-Type: text/plain;charset="utf-8"
    [java] Content-ID: <forecast-location2000102-86453>
    [java]
    [java] Akld
    [java] Haml
    [java] PlmN
    [java] Wgtn
    [java] Chch
    [java] Dund
    [java] --NextPart_000_0125_01C19839.7237929064--
    [java]
    [java] Waiting for response from sbb...
    [java]
    [java] Recived response from sbb:
    [java] HTTP/1.1 200 OK
    [java] Content-Type: text/xml; charset="utf-8"
    [java] Server: RhinoMM7-6.8.0/1.1
    [java] Date: Mon, 21 Mar 2011 21:07:11 GMT
    [java] Connection: close
    [java] Content-Length: 730
    [java]
    [java] <?xml version="1.0" encoding="UTF-8"?>
    [java] <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header><mm7:TransactionID xmlns:mm7="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" env:mustUnderstand="1">wlg1</mm7:TransactionID></env:Header><env:Body><DeliverRsp xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2"><MM7Version>5.3.0</MM7Version><Status><StatusCode>1000</StatusCode><StatusText>Success</StatusText><Details><Text>
    [java] Outlook for Akld: Hail
    [java] Outlook for Haml: Thunderstorms
    [java] Outlook for PlmN: Cloudy
    [java] Outlook for Wgtn: Snowing
    [java] Outlook for Chch: Cloudy
    [java] Outlook for Dund: Cloudy</Text></Details></Status></DeliverRsp></env:Body></env:Envelope>