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, XML-RPC calls, SOAP over JMS, and XML over JMS. 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>
<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.JmsEndpoint" pathPrefix="/xmlRpcOverJms/*">
<format class="com.ataccama.nme.internal.engine.services.endpoints.XmlRpcFormat" />
<connectionName>ActiveMQ</connectionName>
<inputDestination>MQ_in</inputDestination>
<outputDestination>MQ_out</outputDestination>
</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.
-
JmsEndPoint - Java Messaging Services.
-
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 HttpEndpoint attached to listener nmeNative providing services on http://<serverAddress>:<listenerPort>/soapOverHttp
:
<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>
-
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.
Keep in mind that the Listener Names list is deprecated and will be removed. Services are available on all server ports as defined in application properties. The Endpoint Path Prefix configuration will be discontinued in the future and replaced with hardcoded values of |
If format is SOAP, the services' WSDL are available at http://<serverAddress>:<listenerPort>/soapOverHttp
.
JmsEndpoint
JmsEndpoint allows accessing native services via JMS. It requires JMS Provider Component. Following configuration creates JmsEndpoint connected to JMS server defined in ActiveMQ connection (configuration is in JmsProviderComponent), endpoint reads requests from destination MQ_in and sends responses to destination MQ_out:
<endpoint class="com.ataccama.nme.internal.engine.services.endpoints.JmsEndpoint" pathPrefix="/xmlRpcOverJms/*">
<format class="com.ataccama.nme.internal.engine.services.endpoints.XmlRpcFormat" serviceNameHeader="SOAPJMS_soapAction" />
<connectionName>ActiveMQ</connectionName>
<activityByReadWriteMode>true</activityByReadWriteMode>
<inputDestination>MQ_in</inputDestination>
<outputDestination>MQ_out</outputDestination>
<outputParameters>
<outputParameter name="stringParamName" value="stringValue" type="STRING"/>
<outputParameter name="intParamName" value="123" type="INT"/>
<outputParameter name="longParamName" value="10010101001012" type="LONG"/>
<outputParameter name="booleanParamName" value="false" type="BOOLEAN"/>
</outputParameters>
</endpoint>
-
connectionName - name of connection is defined in JmsProviderComponent in the server configuration file.
-
activityByReadWriteMode - (boolean, default:
false
) if set totrue
, allows to control endpoint activity when MDM is switching between RO/RW modes:-
if the engine is switched to the RO mode, the endpoint is stopped.
-
if the engine is switched to the RW mode, the endpoint is started.
-
-
inputDestination - destination from which endpoint is reading requests.
-
outputDestination - destination to which endpoint is sending responses.
-
outputParameters - allows to add some additional information into JMS properties (that is, header).
Optional attributes pathPrefix and listenerNames have same meaning as for HttpEndpoint but are used only for SoapFormat to configure location where WSDL is available.
For XmlRpcFormat under JmsEndpoint, serviceNameHeader is used to define what header contains name of service, default is SOAPJMS_soapAction.
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?