C Setting B2B Configuration Properties in Fusion Middleware Control

This appendix describes how to use Oracle Enterprise Manager Fusion Middleware Control to set B2B configuration properties for properties that are not set on the Configuration tab of the Oracle B2B interface (see Chapter 17, "Configuring B2B System Parameters"). It also discusses how to set B2B properties by using the configmbeanutil utility.

The appendix contains the following topics:

C.1 Properties To Set in Fusion Middleware Control

The following properties can be set in Oracle Enterprise Manager Fusion Middleware Control. See Oracle Fusion Middleware Administrator's Guide for Oracle SOA Suite and Oracle Business Process Management Suite for how to set the properties.

Note:

Restarting the SOA Server is required for changes to B2B properties.

Table C-1 Oracle B2B Properties in Oracle Enterprise Manager Fusion Middleware Control

Property Description
b2b.addebMSHeaders

Used to add the incoming ebMS message details of ACTION, SERVICE, SERVICE TYPE, CPAID, FROMROLE, and TOROLE to the ACTION_NAME header in AQ.

By default only the ACTION is passed as part of ACTION_NAME.

b2b.attachments.dir

To specify an attachments directory location, set this property.

If enabled, this property allows users to specify a directory into which all of the attachments will be written.

Changes to this property require a server restart for the new value to take effect.

b2b.certificatevalidation

This property is used to enable or disable the validation of the certificate received on ebMS. For example, an expired certificate normally throws an error; however, if the property is set to false, it allows the certificate without throwing validation errors. The default value is true, indicating that by default, Oracle B2B validates the certificate.

b2b.checkDuplicate

To check for duplicate messages, set this property to true.

If this property is set to false, a check for a duplicate of the incoming business message is not performed.

By default, Oracle B2B checks for duplicate messages based on the business message ID of the incoming message.

b2b.deploy.validation

To turn off validation during deployment, set this property to false.

This is useful when deploying a large number of agreements where you are certain that the data is valid.

b2b.docPluginList

Using this property, document plugins are loaded as per the order specified in this property. For example,

b2b.docPluginList=Custom,EDI_X12,EDI_EDIFACT,HL7,RosettaNet

ensures that document plugins are loaded as per the specified order. If no value is provided for this property, then all document plugins from the system (protocol.xml) are loaded.

b2b.edi.enablePreprocess

Set this property to true to pre-process data to remove the trailing CRLF (new line characters) and/or unwanted CRLF that maybe present in file.

The default value is false.

Changes to this property require a server restart for the new value to take effect.

oracle.tip.b2b.edi.binaryDocType

This property is used by Oracle B2B to handle the BIN segment of EDI payloads. You need to specify a comma-separated list of document types that can have BIN segments as the following:

oracle.tip.b2b.edi.binaryDocType=841

Setting this property ensures that Oracle B2B processes the corrupt BIN segment content by treating the content as binary.

b2b.edi.identifyToTP

To identify the toTP from the TP information present in the incoming message, use this property.

This property is used for inbound message processing. If it is set to true, the toTP is identified from the TP information present in the incoming message. The default value is false.

b2b.edi.ignoreValidation

To turn off the EDI envelope validation and ignore interchange validation errors for EDI messages, you can set comma separated envelope header with this property.

For example:

b2b.edi.ignoreValidation=InterchangeSenderID,
InterchangeReceiverID 

or use the value ALL to turn off the complete envelope header validation.

Note: If you add or update this flag, a server restart is not needed. However, if you remove the flag, the server must be restarted for the change to take effect.

b2b.encoding

This property can be used to specify encoding other than default UTF-8.

b2b.errorsCumulativeReported

To indicate whether reported errors are cumulative or not, set this property to true or false.

Set this property to true (the default) to report errors in a cumulative fashion.

If set to false, the error text and error description fields are not concatenated with the description starting on a new line.

This property is most useful with EDI batching error messages.

b2b.fa.inbound.validation
b2b.fa.outbound.validation

Use these properties to control inbound and outbound FA validation.

To turn off the outbound FA validation, set the b2b.fa.outbound.validation property to false. The default value is true.

To turn off the inbound FA validation, set the b2b.fa.inbound.validation property to false. The default value is true.

b2b.FACorrelatedByInterchangeId

To correlate inbound and outbound FAs correctly if the same control numbers are used between the same trading partners, set this property to true.

By default Oracle B2B does not correlate inbound and outbound FAs correctly if the same control numbers are used between the same trading partners. Set this property to true so that Oracle B2B will correlate based on Control Number + (Interchange Sender ID + Interchange Receiver ID) for both Inbound and Outbound messages.

b2b.FailedMessagesDirectory

To change the location of the failed application message that is written to the file system, when b2b.jmsRedeliveryLimit is reached, set this property. The location can be changed from the default to another location by setting this property to another folder.

b2b.HAInstance

Set this property to true to ensure only one node in an High Availability (HA) cluster starts a polling thread for the configured File, FTP, or Email channels. Without this property being set, each node starts its own polling thread and could pick the same file multiple times.

The default value of this property is false.

A restart of all the nodes in the cluster is required to ensure each node works in the expected HA Mode.

b2b.IDENTIFY_TP_BY_HOSTNAME

In cases of TCP-based exchange protocols, such as MLLP and Generic TCP, where the host name is masked, to enable Oracle B2B to determine the host name of each message, set this boolean property to true.

If set to true, then Oracle B2B retrieves the host name from the IP address of the host.

If set to false, then Oracle B2B does not lookup the host name from the IP address.

The default value for this property is true.

b2b.TPBasedSeqTarget

To enable a channel name or a trading partner name as a sequence target, set this property to true.

If a message has a sequence target as a part of the action name, then priority is be given to that message property. However, if there is no message level sequence target, and the property (b2b.TPBasedSeqTarget) is enabled, then the trading partner name is considered as the sequence target.

To enable sequencing in case of:

  • TCP: If sequencing is enabled (in trading partner facing channel) and TARGET is not specified, use the trading partner name as the TARGET to query the cache. This happens at the entry point in Oracle B2B.

  • Non-TCP protocols: Because in non-TCP protocols, the channel is not bidirectional, use the TO-PARTY name as TARGET.

  • Nonfabric: Use the sequencing flag in the channel of outbound listening internal channel.

b2b.hl7.ignoreValidation

To turn off the hl7 envelope validation, you can set comma separated envelope header with this property.

For example:

b2b.hl7.ignoreValidation = MessageReceivingFacility,
MessageSendingApp

or set it to ALL to turn off the complete envelope header validation.

b2b.inboundThreadCount

b2b.inboundThreadSleepTime

b2b.outboundThreadCount

b2b.outboundThreadSleepTime

b2b.defaultThreadCount

b2b.defaultThreadSleepTime

To set the number of threads and thread sleep time to improve message processing, set these properties.

The recommended values for b2b.inboundThreadCount and b2b.outboundThreadCount depend on your system. For a 2 GB computer, a setting of 3 to 5 is recommended.

If Oracle B2B is running in a single thread mode (default), then a blocked outbound HTTP message could cause failure in Oracle B2B to process the subsequent message. The HTTP delivery has a default timeout of 60 seconds, and the timeout would push the message to error and unblock the processing. To avoid delays in processing, it is recommended that you increase the thread count property b2b.outboundThreadCount to 3 or 4 threads.

The b2b.inboundThreadSleepTime and b2b.inboundThreadSleepTime properties put a thread to sleep after message processing. A setting between 10 and 1000 (milliseconds) is recommended.

b2b.jmsRedeliveryLimit

You can change the retry limit for reading messages from the JMS queue by setting this property, causing Oracle B2B to retry reading the message for the number of times specified there. The default retry limit is 5.

When the limit count expires, the message and the header contents are written into the file system (the default location is the /tmp folder). Oracle B2B also sends an exception message to the JMS - B2B_IN_QUEUE, reporting the error and providing the location of the saved message.

You can specify the location for failed messages by setting b2b.FailedMessagesDirectory.

b2b.listening.channel.restart.wait

Sometimes Oracle B2B creates multiple file monitor threads for a listening channel. Setting a longer interval using this property helps to avoid the race condition of threads during initialization.

b2b.MaxTimeinAquiredState

Set this property to avoid an issue in which the autostack handler does not resume processing of messages after restart.

The time unit value of b2b.MaxTimeinAquiredState property is in minutes and 30 is the default value.

b2b.mdsCache cache_size

To set the Metadata Service (MDS) instance cache size, set this property.

A ratio of 5:1 is recommended for the xmx-to-mdsCache values. For example, if the xmx size is 1024, maintain mdsCache at 200 MB.

b2b.OutboundDispatchInterval

To control the delay between every cycle of dispatch, use this property. Set this property to specify the amount of time to wait (in milliseconds) between dispatching of sequenced messages.

If enabled, the property will control the delay between every cycle of dispatch. The property can be used along with Message Sequencing and Trading Partner Downtime Schedule features.

When auto stack handler is used, then Oracle B2B retries the outbound failed messages in sequence. Once the endpoint is reached for delivery, all messages in the sequence will be eligible for delivery and this may cause an overload of message delivery at the endpoint. To reduce the load, this property can be used to set the interval between dispatch of messages in milliseconds.

b2b.outboundOneErrorAllError

To specify how errors are flagged, set this parameter to true or false.

For outbound messages, b2b.outboundOneErrorAllError can be set to true or false. The default is false. If the property is set to true, then for outbound messages, even with a single message in error, all outbound batch messages are set to the error state. None of the batched messages are sent to the trading partner.

When using the b2b.outboundOneErrorAllError property, inbound messages behave as if b2b.outboundOneErrorAllError is set to false; that is, if an error occurs during an inbound message process, then only that message is flagged with the error and other messages are passed. There is no option to flag every message as failed.

b2b.payloadObfuscation

To turn on payload obfuscation, set this property to true.

See Section 1.4.1, "Payload Obfuscation," for more information.

b2b.rowLockingForCorrelation

To enable row level locking, set this property to true.

When Oracle B2B receives an EDI FA message and an AS2 MDN message (Acknowledgment message) simultaneously, a race condition can occur which causes the outbound EDI message to remain in the MSG_WAIT_FA state (although FA was successfully processed).

Use this row level locking parameter so that the original EDI message can be accessed sequentially when the correlated FA and Acknowledgment messages are processed concurrently. It avoids a racing condition when Oracle B2B updates the original message.

b2b.setDynamicNameSpace

To use EDI ecs and xsd files from Oracle B2B 10g version, set this property to true.

When using EDI ecs and xsd files in Oracle B2B 11g which were used in Oracle B2B 10g, the XEngine may generate dynamic namespace for the translated xml. For example,

xmlns="NS_31CA8D0F33324F95A0BF15D85539C27E20060518215520"

To turn off dynamic namespace generation for inbound EDI messages, set this property to false.

b2b.SyncAppDelivery

When using callouts, to enable delivery of messages to the back-end message queue, set this property to true. To disable the message delivery, set this property to false. By default, this property is disabled (set to false). This property is case-sensitive.

b2b.setisLargePayloadPropertyForSmallMsg

By default Oracle B2B sets the LARGE_PAYLOAD header property to true only if the payload is large (as per configured size). In case the payload is small, the LARGE_PAYLOAD header property is not set. if you want to set the LARGE_PAYLOAD property for small payloads also, set the b2b.setisLargePayloadPropertyForSmallMsg property to true.

By default, the value of the property is false.

b2b.listening_channels.continue_reconnect

By default, if the resource server, such as SFTP or JMS is down, Oracle B2B tries to reconnect only a specified number of times. However, if Oracle B2B cannot reconnect within the specified retries, it simply stops the particular listening channel.

When this property is set to true, Oracle B2B makes continuous attempts to reconnect to resource server in downtime.

In case of SFTP, the resource server is an SFTP server, and in case of JMS, the resource server is an JMS server.

By default, the value of the property is false.

b2b.reuseHttpConnections

Set the value of this property to true to reuse HTTP connections. By default, the value of this property is false. When the default value is used, HTTP connections are opened and closed repeatedly when accessing the same URL consecutively.

However, this property depends on other property values to take effect. If you call HTTPClient.HTTPConnection.setCurrentProxy when reusing an HTTP connection, side effect changes (such as reusing HTTP connections, closing the socket) are invoked only if the proxy settings have actually changed for the obtained HTTP connection instance. If invoking setCurrentProxy applies values currently set in the HTTP connection instance, the setCurrentProxy call is ignored.

So you need to compare HTTPClient.HTTPConnection.getProxyHost and HTTPConnection.getProxyPort values against proposed new values, and call HTTPConnection.setCurrentProxy only if the values are different.

b2b.deliverPingPongToBackend

In ebMS, you can check the server state by using a set of messages called 'Ping and Pong'. Set the b2b.deliverPingPongToBackend property to true for enabling Oracle B2B to pass these messages to the backend applications on receipt of such messages.

By default, the value of the property is false, which forces Oracle B2B to consume these Ping and Pong messages on receipt.

b2b.trackInboundCtlNum

By default, the value of this property is true, which controls the Oracle B2B behavior of saving the control numbers of inbound EDI messages in the database (the control numbers of inbound EDI message from a given partner will be inserted, or updated if the partner entry is already present). However, if set to false, then Oracle B2B does not attempt to insert the control numbers for inbound messages.

b2b.SingleTransactionAtInbound 

In the case of an inbound MLLP HA, if the server crashes after wire message has been committed to the database but before the event gets enqueued to Event Queue, it is perpetually stuck in the Sequence Manager table and is not processed. This blocks the inbound message flow in the sequencing case.

Set the b2b.SingleTransactionAtInbound to true only in the case of MLLP HA to enable the JMS and database commit to take place in a single transaction. It is suitable only for the MLLP case where only one inbound message is received at a time.

The default value of the property is false.

b2b.retainmsgid

When this value is set to true, @msgid is retained for the specific message ID, protocol message ID and collaboration ID during an Application Message resubmit.

If this value is set to false, @msgid is retained for the message ID, but a new ID is generated for the protocol message ID and the collaboration ID.

The default value for this property is false.

b2b.TPACache

Use this property to enable or disable Trading Partner Agreement (TPA) layer processing cache. By default, this property is not enabled.

Limitation of the property: The TPA cache relies on agreement deployments to refresh the change in values. So, when this parameter is enabled, hot uptake of channel parameter changes does not work. It would require the agreements to be deployed. You need to restart the server for applying any changes to this parameter.

The valid value for this parameter is local.

b2b.DispatcherCache

Use this property to enable or disable the Dispatcher processing cache. By default, this property is not enabled. You need to restart the server for applying any changes to this parameter.

The valid value for this parameter is local.

b2b.enableDeliveryHelper

Use this property to spawn a separate thread for dispatching messages to the back-end application. Enable this property to improve the performance of the inbound dispatcher. You need to restart the server for applying any changes to this parameter.

The valid values for this property are true or false.

b2b.sequencingFetchSize

Use this property to define the batch size for sequencing fetches. The Inbound or outbound Dispatcher attempt to pick <batchsize> number of messages for a given sequence target in a single fetch. The default value for this property is 20. You need to restart the server for applying any changes to this parameter.

The valid value for this parameter is Integer.

Coherence system properties

coherence.b2bDispatcherCache.size

coherence.b2bDispatcherCache.expiry

coherence.b2bTPACache.size

coherence.b2bTPACache.expiry

These system properties help you to tune the cache size and expiry durations.

The following are the default values of the system properties:

coherence.b2bDispatcherCache.size - 20000

coherence.b2bDispatcherCache.expiry - 3 minutes

coherence.b2bTPACache.size - 20000

coherence.b2bTPACache.expiry - 30 minutes


C.2 Using the configmbeanutil Utility

You can also use the configmbeanutil utility to set properties.

To use the configmbeanutil utility:

  1. Set the MW_HOME environment variable to point to the Fusion Middleware installation directory. For example,

    setenv MW_HOME /scratch/$user/fmwhome
    

    Note:

    To access the Fusion Middleware directory, you must provide an mbean property file (mbeanutil.properties) that contains host, port, user, and password information. For example,

    host=myfmw.com
    port=7001
    user=weblogic
    password=mypwd 
    
  2. Set the JAVA_HOME environment variable. For example,

    setenv JAVA_HOME ${MW_HOME}/jdk160_14_R27.6.4-18
    
  3. Add the Java bin directory to the PATH environment variable. For example,

    setenv PATH ${JAVA_HOME}/bin:${PATH}
    

Example C-1, Example C-2, Example C-3, and Example C-4 show uses for this utility.

Example C-1 To Print All Properties to the Console

java -cp $MW_HOME/AS11gR1SOA/soa/modules/oracle.soa.b2b_11.1.1/b2b.jar:$MW_HOME/
wlserver_10.3/server/lib/wljmxclient.jar:$MW_HOME/modules/
glassfish.jaxb_1.2.0.0_2-1-7.jar oracle.tip.b2b.utility.ConfigMBeanUtility

Example C-2 To Add a Property

java -cp $MW_HOME/AS11gR1SOA/soa/modules/oracle.soa.b2b_11.1.1/b2b.jar:$MW_HOME/
wlserver_10.3/server/lib/wljmxclient.jar:$MW_HOME/modules/
glassfish.jaxb_1.2.0.0_2-1-7.jar oracle.tip.b2b.utility.ConfigMBeanUtility add b2b.test cool ok

Example C-3 To Update a Property

java -cp $MW_HOME/AS11gR1SOA/soa/modules/oracle.soa.b2b_11.1.1/b2b.jar:$MW_HOME/
wlserver_10.3/server/lib/wljmxclient.jar:$MW_HOME/modules/
glassfish.jaxb_1.2.0.0_2-1-7.jar oracle.tip.b2b.utility.ConfigMBeanUtility 
update b2b.test thru

Example C-4 To Remove a Property

java -cp $MW_HOME/AS11gR1SOA/soa/modules/oracle.soa.b2b_11.1.1/b2b.jar:$MW_HOME/
wlserver_10.3/server/lib/wljmxclient.jar:$MW_HOME/modules/
glassfish.jaxb_1.2.0.0_2-1-7.jar oracle.tip.b2b.utility.ConfigMBeanUtility 
remove b2b.test