Native Services
Native services are services provided by the service engine as a layer for accessing data persisted in MDM.
These services can be called directly or through an integration component such as ESB. The actual service names and parameters are derived directly from the data model.
In this version, native services available on HttpEndpoint in both SOAP and XML formats are not secured by default and additional configuration must be used. This also applies to SOAP services configured as part of the MDM solution in the so-called Online Services. Which endpoints are affected depends on how your solution is implemented.For example, this can include the following endpoints:
To mitigate the issue, we recommend upgrading to 13.8.0. In case this is not a viable option, we recommend assessing the risk and reviewing and updating the MDM solution configuration, as described in the following sections. Ataccama PaaS environments are not affected by this issue. MDM Native ServicesDepending on whether you are using native services, proceed with one of the following options.
ONE Runtime Server Online ServicesThe issue occurs only when the |
For history native services, see History Plugin. |
Native services configuration file
Services are configured in the model project and are generated into the nme-services.gen.xml
file.
It contains two main elements:
-
Services: Defines which services are available.
-
Endpoints: Defines what interfaces can be used to call them.
Currently, services are exposed as SOAP over HTTP, or XML-RPC calls. WSDLs are pre-generated for SOAP services.
<serviceConfig>
<services>
<service class="com.ataccama.nme.internal.engine.services.handlers.GetInstanceByIdServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.GetMasterByIdServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.TraverseMasterServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.GenericTraversalMasterService" />
<service class="com.ataccama.nme.internal.engine.services.handlers.ListInstancesServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.ListMastersServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.IdentifyMasterService" entity="party_mas" masterLayer="gen" name="identifyPartyGen" />
<service class="com.ataccama.nme.internal.engine.services.handlers.ProcessDeltaService" />
<!-- SoR model services -->
<service class="com.ataccama.nme.internal.engine.services.handlers.GetRecordByIdServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.ListRecordsServiceBundle" />
<service class="com.ataccama.nme.internal.engine.services.handlers.ProcessUpsertService" entity="party"/>
</services>
<endpoints>
<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.HttpEndpoint" pathPrefix="/soapOverHttp/*" listenerNames="nmeNative">
<format class="com.ataccama.nme.internal.engine.services.endpoints.SoapFormat" />
</endpoint>
</endpoints>
</serviceConfig>
This configuration shows all available data-related native services (special control services are described in the following chapters).
Services are available through defined endpoints at http://localhost:8051/pathPrefix
.
The endpoint can be referring to ports defined in the MDM Server application.properties
using listenerNames
attribute (this feature is deprecated, the services are available on all ports by default).
A list of services provided is accessible via the admin console (MD Interfaces > Services) or direct link: localhost:8051/console/nmeInterfaces/services
.
In case of SOAP services, the list of available services is available at localhost:8051/soap/
.
WSDL per each shown service is also available.
Endpoints
Native services are available at configured endpoints in configured formats. MDM supports the following endpoints and formats:
-
HttpEndpoint - Standard HTTP protocol.
-
SoapFormat - Standard SOAP 1.1 format.
-
XmlRpcFormat - Plain XML.
HttpEndpoint
HttpEndpoint allows to call native services via the standard HTTP protocol.
The following configuration creates an HttpEndpoint providing services on http://<serverAddress>:<listenerPort>/xmlRpcOverHttp
:
<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.HttpEndpoint" pathPrefix="/soapOverHttp/*" listenerNames="all">
<format class="com.ataccama.nme.internal.engine.services.endpoints.SoapFormat" />
</endpoint>
The following configuration creates an HttpEndpoint providing services on http://<serverAddress>:<listenerPort>/xmlRpcOverHttp
:
<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.HttpEndpoint" pathPrefix="/xmlRpcOverHttp" listenerNames="all">
<format class="com.ataccama.nme.internal.engine.services.endpoints.XmlRpcFormat"/>
</endpoint>
-
listenerNames (optional): Comma-separated list of listener names where native services are available, default value is "all" listeners.
-
pathPrefix: Prefix of the URL where native services are available.
The Endpoint Path Prefix configuration will be discontinued in the future and replaced with hardcoded values of /api/soap and /api/xml respectively.
|
If format is SOAP, the services' WSDL are available at http://<serverAddress>:<listenerPort>/soapOverHttp
.
Services
This section describes all services that can be used with MDM.
The examples given are for XmlRpcFormat
.
For SoapFormat,
you can get WSDL in the MDM Web App Admin Center (see ROOT:mdm-web-app-admin-center.adoc) or you can simply change examples this way (the example is for getExampleInstanceById
):
<request>
<id>1</id>
</request>
to
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:get="http://www.ataccama.com/ws/nme/getExampleInstanceById">
<soapenv:Header/>
<soapenv:Body>
<get:getExampleInstanceById>
<get:id>1</get:id>
</get:getExampleInstanceById>
</soapenv:Body>
</soapenv:Envelope>
For the following sections, we use a placeholder instance entity Example , a placeholder master entity Example , and a placeholder Master View Mv to illustrate the functionality of services.
|
Was this page useful?