# SAFAgentMBean

Overview | Related MBeans | Attributes | Operations

## Overview

This class represents a Store-and-Forward (SAF) agent. A SAF sending agent takes care of storing messages to a persistent storage, forwarding messages to the receiving side, and re-transmitting messages when acknowledgements do not come back in time. A SAF receiving agent takes care of detecting and eliminating duplicate messages sent by the receiving agent, and deliver messages to the final endpoint.

Since | 9.0.0.0
Fully Qualified Interface Name | If you use the `getMBeanInfo` operation in MBeanTypeServiceMBean, supply the following value as this MBean's fully qualified interface name: `weblogic.management.configuration.SAFAgentMBean`
Factory Methods | Factory methods in DomainMBean
Access Points Inherited from DeploymentMBean | Because this MBean extends or implements DeploymentMBean, you can also access this MBean by retrieving DeploymentMBeans. The following attributes contain DeploymentMBeans and its subtypes:
DomainMBean.Deployments |
Access Points Inherited from TargetMBean | Because this MBean extends or implements TargetMBean, you can also access this MBean by retrieving TargetMBeans. The following attributes contain TargetMBeans and its subtypes:
AppDeploymentMBean.Targets BasicDeploymentMBean.Targets CapacityMBean.Targets ClassDeploymentMBean.Targets ContextCaseMBean.Targets ContextRequestClassMBean.Targets CustomResourceMBean.Targets DeploymentMBean.Targets DomainLibraryMBean.Targets DomainMBean.Targets FairShareRequestClassMBean.Targets FileStoreMBean.Targets HTTPProxyMBean.Targets JDBCStoreMBean.Targets JDBCSystemResourceMBean.Targets JMSInteropModuleMBean.Targets JMSServerMBean.Targets JMSSystemResourceMBean.Targets JoltConnectionPoolMBean.Targets LibraryMBean.Targets MailSessionMBean.Targets MaxThreadsConstraintMBean.Targets | MessagingBridgeMBean.Targets MinThreadsConstraintMBean.Targets PathServiceMBean.Targets PersistentStoreMBean.Targets ResponseTimeRequestClassMBean.Targets RMCFactoryMBean.Targets SAFAgentMBean.Targets ShutdownClassMBean.Targets StartupClassMBean.Targets SubDeploymentMBean.Targets SystemResourceMBean.Targets TargetInfoMBean.Targets VirtualDestinationMBean.Targets VirtualHostMBean.Targets WebDeploymentMBean.Targets WebServerMBean.Targets WLDFSystemResourceMBean.Targets WLECConnectionPoolMBean.Targets WorkManagerMBean.Targets WTCServerMBean.Targets

## Related MBeans

This section describes attributes that provide access to other MBeans. For more information about the MBean hierarchy, refer to WebLogic Server MBean Data Model.

JMSSAFMessageLogFile Store | Targets

### JMSSAFMessageLogFile

The jms message log file configuration for this saf agent

Factory Methods | No explicit creator method. The child shares the lifecycle of its parent.
Privileges | Read only
Type | JMSSAFMessageLogFileMBean
Relationship type: | Containment.

### Store

The persistent disk-based file store or JDBC-accessible database for the SAF agent.

If a store is not configured, the server's default store is used.

Privileges | Read/Write
Type | PersistentStoreMBean
Relationship type: | Reference.
Redeploy or Restart required | Changes take effect after you redeploy the module or restart the server.

### Targets

Privileges | Read/Write
Type | TargetMBean[]
Relationship type: | Reference.

## Attributes

This section describes the following attributes:

AcknowledgeInterval BytesMaximum BytesThresholdHigh BytesThresholdLow ConversationIdleTimeMaximum DefaultRetryDelayBase DefaultRetryDelayMaximum DefaultRetryDelayMultiplier DefaultTimeToLive DeploymentOrder ForwardingPausedAtStartup IncomingPausedAtStartup LoggingEnabled MaximumMessageSize | MessageBufferSize MessagesMaximum MessagesThresholdHigh MessagesThresholdLow Name Notes PagingDirectory Parent ReceivingPausedAtStartup ServiceType Type WindowInterval WindowSize

### AcknowledgeInterval

The maximum interval between two successive acknowledgements sent by the receiving side.

- Applies only to agents with receiving capability.

- A value of `-1` specifies that there is no time limit between successive acknowledgement.

- Updating `AcknowlegeInterval` causes connections starting after the update to use the new value.

Privileges | Read/Write
Type | long
Default Value | -1

### BytesMaximum

The maximum bytes quota (total amount of bytes) that can be stored in this SAF agent.

- The default value of `-1` specifies that there is no WebLogic-imposed limit on the number of bytes that can be stored. However, excessive bytes volume can cause memory saturation, so this value should correspond to the total amount of available system memory relative to the rest of your application load.

- Applies only to agents with sending capability.

- Updating `BytesMaximum` affects only new requests.

Range of Values: >= BytesThresholdHigh

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### BytesThresholdHigh

The upper threshold value that triggers events based on the number of bytes stored in the SAF agent.

- The default value of `-1` disables the events for this SAF agent.

- Applies only to agents with sending capability.

- Updating `BytesThresholdHigh` affects only new requests.

- If the number of bytes exceeds this threshold, the triggered events are:

  - Log Messages: A message is logged on the server indicating a high threshold condition.

  - Flow Control: The agent becomes armed and instructs producers to begin decreasing their message flow.

Range of Values: <= BytesMaximum; >= BytesThresholdLow

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### BytesThresholdLow

The lower threshold that triggers events based on the number of bytes stored in the SAF agent.

- The default value of `-1` disables the events for this SAF agent.

- Applies only to agents with sending capability.

- Updating `BytesThresholdLow` affects only new requests.

- If the number of bytes falls below this threshold, the triggered events are:

  - Log Messages: A message is logged on the server indicating that the threshold condition has cleared.

  - Flow Control: The agent becomes disarmed and instructs producers to beging increasing their message flow.

Range of Values: <= BytesThresholdHigh

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### ConversationIdleTimeMaximum

The maximum amount of time allowed before a sending side releases the resources used by a conversation.

- If there is no activity for a conversation for the specified amount of time, the sending agent releases all resources for that conversation and notifies the receiving agent to do the same.

- A value of `0` specifies that resources for a conversation are not released unless the application explicitly closes the conversation.

- Updating `ConversationIdleTimeMaximum` causes connections starting after the update to use the new value.

Privileges | Read/Write
Type | long
Default Value | 0
Minimum value | 0

### DefaultRetryDelayBase

The amount of time, in milliseconds, between the original delivery attempt and the first retry.

- If `RetryDelayMultiplier` is set to `1`, this defines the interval between any two successive retry attempts.

- Applies only to agents with sending capability.

- Updating `DefaultRetryDelayBase` causes connections starting after the update to use the new value.

Range of Values: <= RetryDelayMaximum if RetryDelayMultiplier is not 1.0.

Privileges | Read/Write
Type | long
Default Value | 20000
Minimum value | 1

### DefaultRetryDelayMaximum

The maximum amount of time, in milliseconds, between two successive delivery retry attempts.

- Applies only to agents with sending capability.

- Updating `DefaultRetryDelayMaximum` causes connections starting after the update to use the new value.

Range of Values: > = RetryDelayBase if RetryDelayMultiplier is not 1.0.

Privileges | Read/Write
Type | long
Default Value | 180000
Minimum value | 1

### DefaultRetryDelayMultiplier

The factor used to multiply the previous delay time to calculate the next delay time to be used.

- Applies only to agents with sending capability.

- Updating `DefaultRetryDelayMuliplier` causes connections starting after the update to use the new value.

Range of Values: >= 1.

Privileges | Read/Write
Type | double
Default Value | 1.0
Minimum value | 1.0

### DefaultTimeToLive

The default amount of time, in milliseconds, that the agent guarantees to reliably send messages.

- A value of 0 means the agent guarantees to reliably send messages for the duration of the conversation.

- Updating `DefaultTimeToLive` causes conversations starting after the update to use the new value.

Privileges | Read/Write
Type | long
Default Value | 0
Minimum value | 0

### DeploymentOrder

A priority that the server uses to determine when it deploys an item. The priority is relative to other deployable items of the same type.

For example, the server prioritizes and deploys all EJBs before it prioritizes and deploys startup classes.

Items with the lowest Deployment Order value are deployed first. There is no guarantee on the order of deployments with equal Deployment Order values. There is no guarantee of ordering across clusters.

Privileges | Read/Write
Type | int
Default Value | 1000
Minimum value | 0
Maximum value | 2147483647

### ForwardingPausedAtStartup

Specifies whether the agent is paused for forwarding messages at the startup time.

When enabled, the sending agent forwards messages. Otherwise, the sending agent does not forward any messages.

Privileges | Read/Write
Type | boolean

### IncomingPausedAtStartup

Specifies whether the agent is paused for incoming messages at startup time.

When enabled, the sending agent accepts new messages. Otherwise, the sending agent does not accept any new messages.

Privileges | Read/Write
Type | boolean

### LoggingEnabled

Specifies whether a message is logged in the server log file when a message fails to be forwarded.

- If selected, this applies to messages that fail to be forwarded and delivered to the final destination when there is no error handling in a SAF application or the application's error handling fails.

- Applies only to agents with receiving capability.

- Updating `LoggingEnabled` causes connections starting after the update to use the new value.

Privileges | Read/Write
Type | boolean
Default Value | true

### MaximumMessageSize

The maximum number of bytes allowed in individual messages on this SAF agent.

- The message size includes the message body, any user-defined properties, and the user-defined JMS header fields: `JMSCorrelationID` and `JMSType`.

- Producers sending messages that exceed the configured maximum message size for the SAF agent will receive a `ResourceAllocationException`.

- The maximum message size is only enforced for the initial production of a message. Messages that are redirected to an error destination or forwarded to a member of a distributed destination are not checked for size. For instance, if a destination and its corresponding error destination are configured with a maximum message size of 128K bytes and 64K bytes, respectively, a message of 96K bytes could be redirected to the error destination (even though it exceeds the 64K byte maximum), but a producer could not directly send the 96K byte message to the error destination.

- Applies only to agents with sending capability.

- Updating `MaximumMessageSize` affects only incoming messages; stored messages are not affected.

Privileges | Read/Write
Type | int
Default Value | 2147483647
Minimum value | 0

### MessageBufferSize

The amount of memory used to store message bodies in memory before they are paged out to disk.

- A value of -1 (the default) specifies that the server will automatically determine a size based on the maximum heap size of the JVM. This default will be set to either one-third the maximum heap size, or 512 megabytes, whichever is larger.

- The larger the buffer, the more memory JMS will consume when many messages are waiting on queues or topics. Once the buffer is surpassed, JMS may write message bodies to the directory specified by PagingDirectory in an effort to reduce memory usage below this buffer.

- Surpassing the buffer size does not stop the JMS server from accepting new messages. It is still possible to run out of memory if messages are arriving faster than they can be written to disk. Users with high messaging loads who wish to support the highest possible availability should consider setting a quota or setting a threshold and enabling flow control.

- Applies only to agents with sending capability.

- Paging is always supported.

- Updating the memory size resets the message count so that only requests arriving after the update are charged against the new memory size.

For more information, see:

- getPagingDirectory

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### MessagesMaximum

The maximum message quota (total amount of messages) that can be stored in this SAF agent.

- The default value of `-1` specifies that the server instance has no limit on the number of messages that can be stored. However, excessive message volume can cause memory saturation, so this value should correspond to the total amount of available system memory relative to the rest of your application load.

- Applies only to sending agents.

- Updating the maximum message quota resets the message count so that only requests arriving after the update are charged against the new quota.

Range of Values: >= MessagesThresholdHigh

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### MessagesThresholdHigh

The upper threshold that triggers events based on the number of messages stored in the SAF agent.

- The default value of `-1` disables the events for this SAF agent.

- Applies only to agents with sending capability.

- Updating `MessagesThresholdHigh` affects only new requests.

- If the number of messages exceeds this threshold, the triggered events are:

  - Log Messages: A message is logged on the server indicating a high threshold condition.

  - Flow Control: The agent becomes armed and instructs producers to begin decreasing their message flow.

Range of Values: <= MessagesMaximum; >= MessagesThresholdLow

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### MessagesThresholdLow

The low threshold that triggers events based on the number of messages stored in the SAF agent.

- The default value of `-1` disables the events for this SAF agent.

- Applies only to agents with sending capability.

- Updating `MessagesThresholdLow` affects only new requests.

- If the number of messages falls below this threshold, the triggered events are:

  - Log Messages: A message is logged on the server indicating that the threshold condition has cleared.

  - Flow Control: The agent becomes disarmed and instructs producers to begin increasing their message flow.

Range of Values: <= MessagesThresholdHigh.

Privileges | Read/Write
Type | long
Default Value | -1
Minimum value | -1

### Name

The user-specified name of this MBean instance.

This name is included as one of the key properties in the MBean's `javax.management.ObjectName`:
`Name=user-specified-name`

Privileges | Read/Write
Type | java.lang.String

### Notes

Optional information that you can include to describe this configuration.

WebLogic Sever saves this note in the domain's configuration file (`config.xml`) as XML PCDATA. All left angle brackets (<) are converted to the XML entity `&lt;`. Carriage returns/line feeds are preserved.

Note:

  If you create or edit a note from the Administration Console, the Administration Console does not preserve carriage returns/line feeds.

Privileges | Read/Write
Type | java.lang.String

### PagingDirectory

Specifies where message bodies are written when the size of the message bodies in the JMS server exceeds the message buffer size. If unspecified, messages are written to the `tmp` directory in the host WebLogic Server instance's directory. For example, `domainName/servers/servername/tmp`.

- For best performance, this directory should not be the same as the directory used by the SAF agent's persistent store.

- Applies only to agents with sending capability.

For more information, see:

- getMessageBufferSize

Privileges | Read/Write
Type | java.lang.String

### Parent

Return the immediate parent for this MBean

Privileges | Read/Write
Type |

### ReceivingPausedAtStartup

Specifies whether the agent is paused for receiving messages at the startup time.

When enabled, the sending agent receives messages. Otherwise, the sending agent does not receive any messages.

Privileges | Read/Write
Type | boolean

### ServiceType

The type of service that this SAF agent provides.

Range of Values: `Sending-only`, `Receiving-only`, or `Both`.

Privileges | Read/Write
Type | java.lang.String
Default Value | Both
Legal Values | Both Sending-only Receiving-only

### Type

Returns the type of the MBean.

Privileges | Read only
Type | java.lang.String
Redeploy or Restart required | Changes take effect after you redeploy the module or restart the server.

### WindowInterval

The maximum amount of time, in milliseconds, that a JMS sending agent will wait before forwarding messages in a single batch.

A sending agent will wait to forward the message batch until either: (A) the source destination message count is greater than or equal to the configured `Window Size`; (B) it has waited a specified `Window Interval`, whichever comes first.

Privileges | Read/Write
Type | long
Default Value | 0
Minimum value | 0

### WindowSize

For JMS messages, the number of messages in a batch. A sending agent waits to forward a message batch until the source destination message count is greater than or equal to this value. For WSRM, the maximum number of unacknowledged messages allowed between a source destination and a target destination during a conversation.

Privileges | Read/Write
Type | int
Default Value | 10
Minimum value | 1

## Operations

This section describes the following operations:

addTarget freezeCurrentValue isSet removeTarget | restoreDefaultValue unSet

### addTarget

You can add a target to specify additional servers on which the deployment can be deployed. The targets must be either clusters or servers.

Operation Name | `"addTarget"`
Parameters | `Object [] { target }` where: `target` is an object of type `weblogic.management.configuration.TargetMBean` that specifies: The feature to be added to the Target attribute
Signature | `String [] { "weblogic.management.configuration.TargetMBean" }`
Returns | `boolean`
Exceptions | `javax.management.InvalidAttributeValueException` `weblogic.management.DistributedManagementException`

### freezeCurrentValue

If the specified attribute has not been set explicitly, and if the attribute has a default value, this operation forces the MBean to persist the default value.

Unless you use this operation, the default value is not saved and is subject to change if you update to a newer release of WebLogic Server. Invoking this operation isolates this MBean from the effects of such changes.

Note:

  To insure that you are freezing the default value, invoke the `restoreDefaultValue` operation before you invoke this.

This operation has no effect if you invoke it on an attribute that does not provide a default value or on an attribute for which some other value has been set.

Deprecated. 9.0.0.0

Operation Name | `"freezeCurrentValue"`
Parameters | `Object [] { attributeName }` where: `attributeName` is an object of type `java.lang.String` that specifies: attributeName
Signature | `String [] { "java.lang.String" }`
Returns | `void`
Exceptions | `javax.management.AttributeNotFoundException` `javax.management.MBeanException`

### isSet

Returns true if the specified attribute has been set explicitly in this MBean instance.

Operation Name | `"isSet"`
Parameters | `Object [] { propertyName }` where: `propertyName` is an object of type `java.lang.String` that specifies: property to check
Signature | `String [] { "java.lang.String" }`
Returns | `boolean`

### removeTarget

Removes the value of the addTarget attribute.

For more information, see:

- addTarget

Operation Name | `"removeTarget"`
Parameters | `Object [] { target }` where: `target` is an object of type `weblogic.management.configuration.TargetMBean` that specifies: target
Signature | `String [] { "weblogic.management.configuration.TargetMBean" }`
Returns | `boolean`
Exceptions | `javax.management.InvalidAttributeValueException` `weblogic.management.DistributedManagementException`

### restoreDefaultValue

If the specified attribute has a default value, this operation removes any value that has been set explicitly and causes the attribute to use the default value.

Default values are subject to change if you update to a newer release of WebLogic Server. To prevent the value from changing if you update to a newer release, invoke the `freezeCurrentValue` operation.

This operation has no effect if you invoke it on an attribute that does not provide a default value or on an attribute that is already using the default.

Deprecated. 9.0.0.0

Operation Name | `"restoreDefaultValue"`
Parameters | `Object [] { attributeName }` where: `attributeName` is an object of type `java.lang.String` that specifies: attributeName
Signature | `String [] { "java.lang.String" }`
Returns | `void`
Exceptions | `javax.management.AttributeNotFoundException`

### unSet

Restore the given property to its default value.

Operation Name | `"unSet"`
Parameters | `Object [] { propertyName }` where: `propertyName` is an object of type `java.lang.String` that specifies: property to restore
Signature | `String [] { "java.lang.String" }`
Returns | `void`