
Configuring the Inbound JDBC Adapter
Use
You need to configure the inbound JDBC adapter to send database contents to the
Integration Engine.To configure the adapter you must specify the following:
This driver is not supplied with the adapter but must be supplied by the database provider or third-parties.
Prerequisites
You have:
Procedure
The configuration of the inbound JDBC adapter comprises four functional subareas:
Specify the class name as follows:
classname=com.sap.aii.messaging.adapter.ModuleDB2XMB
This specification is mandatory.
Specify the mode of the inbound JDBC adapter. The following is the only permitted value:
mode=DB2XMB
Subsequent versions may permit additional values.
Enter the complete address (URL) of the Integration Engine that you want to send the message to:
XMB.TargetURL=http://IntegrationEngineHost:port/pipeline-arguments
This specification is mandatory.
![]()
The Integration Engine address can also be accessed dynamically from the System Landscape Directory. The following entry is added to the configuration for this purpose:
XMB.SLDConfiguration=SLDaccessor
In this case, for the system specified with
XMB.SenderBusinessSystem, the URL of the corresponding Integration Server in the SLD is exported and the value specified under XMB.TargetURL is used instead. You also need to specify the following:XMB.TargetURL=<fromSLD>
To be able to access the System Landscape Directory, the
SLDaccessor service must be configured correspondingly and the respective entries must be maintained in the System Landscape Directory.If an authentication was specified for the specified URL (HTTP service) in the Integration Engine, the following specifications are mandatory:
![]()
The specifications must match those that you made in transaction SICF in the Integration Engine. If you do not specify a user and password combination, or the combination is invalid, the system will terminate each attempt to access the Integration Engine with the message Transport Exception: http-Error 401 – Unauthorized.
The user must have the authorizations of group SAP_XI_APPL_SERV_USER on the Integration Server.
If you use a different client or language to the default setting in the Integration Engine when logging on, you can also set the following parameters:
The following address arguments are mandatory. They are used to identify the adapter configuration in
routing and in mapping in the Integration Engine pipeline. You can also find an explanation about each argument there.For the sender system (the JDBC adapter)

You only need to specify a receiver system if one is not determined during routing.
Specifies how the Integration Engine should process a message. The following values are permitted:
XMB.QualityOfService
=BE (Best Effort, means synchronous processing)XMB.QualityOfService
=EO (Exactly Once, means asynchronous processing)XMB.qualityOfService
=EOIO (Exactly Once in Order, means asynchronous processing using queues, in other words guaranteed execution exactly once and maintaining the sequence of successive messages)This specification is mandatory.
You must also define a queue name for
EOIO:This queue name is used in the Integration Engine to process messages in the same sequence that they arrived in.
These specifications are mandatory and have no default values.
Specify the Java class of the JDBC driver that the JDBC adapter must load to be able to access the driver. The exact specification varies according to the JDBC driver; see material from the respective provider for exact details.
Specify the URL with which you can establish a database connection using the JDBC driver. The exact URL format can vary; see material from the respective provider for more details.
Specify a valid SQL SELECT expression to select the data to be sent from the specified database. The expression only needs to correspond to the SQL variant supported by the respective JDBC driver; so it can also contain table JOINs, for example.
Specify a valid SQL expression that can be applied to the database once the data (determined with
db.processDBSQLStatement) has been successfully sent to the Integration Engine. This must be an INSERT, UPDATE, or DELETE expression. Examples of typical scenarios would be deleting the sent data from the database with a DELETE statement or selecting the data with an UPDATE statement. Instead of the SQL expression, you could also specify <TEST> (including the pointed parenthesis). In this case, once the data has been successfully sent, the system does not execute a database operation and the data remains unaltered in the database.
This means that data is sent again as a new message if the adapter is restarted or if the time period specified in
de.pollInterval is exceeded. This mode is exclusively of use when testing the configuration of the adapter or the Integration Engine, and is not for production operation.![]()
In Exactly Once mode, the statements specified under
db.processDBSQLStatement and db.confirmDBSQLStatement, as well as the formatting of the message are all performed within a database transaction. The message is then sent afterwards. Until the message has been sent successfully to the Integration Server, it is temporarily persisted as a file in the Adapter Engine directory /Data.If you specify an operation system command here, the system executes it following successful database operations (PROCESS and CONFIRM statements). The default value is an empty character string (no command).
Specify the number of seconds that the adapter must wait before it calls the
db.processDBSQLStatement again.You can set the value to
0, if you do not want to repeat the call. In this case the adapter status remains as STOPPED. To initiate a new call, choose Stop/Start or Restart to restart the adapter.Details regarding joining the queue are entered in the adapter log by default (
db.pollInterval>0). If the queue is short, this can lead to a correspondingly large amount of output in the log. In such instances, the log output (but not the queue itself) can be deactivated by using db.logPollInterval=NO.The default value is
YES.Result
The system converts the table resulting from the
db.processDBSQLStatement into a valid XML document and sends it to the Integration Engine. The document looks as follows:<resultset>
<row>
<column-name1>column-value</ column-name1>
<column-name2>column-value</ column-name2>
<column-name3>column-value</ column-name3>
</row>
<row>
<column-name1>column-value</ column-name1>
<column-name2>column-value</ column-name2>
<column-name3>column-value</ column-name3>
</row>
</resultset>
This document can then be processed further by the Integration Engine.