Package org.jboss.jbossts.star.client
Class SRAClient
java.lang.Object
org.jboss.jbossts.star.client.SRAClient
- All Implemented Interfaces:
Closeable
,AutoCloseable
,SRAClientAPI
A utility class for controlling the lifecycle of Long Running Actions (SRAs) but the prefered mechanism is to use
the annotation in the
org.jboss.jbossts.star.annotation
package-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final long
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
static final String
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionAttempt to cancel an SRA Trigger the compensation of the SRA.void
close()
Attempt to close an SRA Trigger the successful completion of the SRA.static String
Lookup active SRAsReturns all SRAs Gets both active and recovering SRAschecks whether there is an SRA associated with the calling threadList recovering Long Running Actions Returns SRAs that are recovering (ie some compensators still need to be ran)getResponseData
(URL sraId) static String
getTerminationUris
(URL aaId, Class<?> compensatorClass, jakarta.ws.rs.core.UriInfo uriInfo, boolean validate) getUrl()
isActiveSRA
(URL sraId) Indicates whether an SRA is activeisCompensatedSRA
(URL sraId) Indicates whether an SRA was compensatedisCompletedSRA
(URL sraId) Indicates whether an SRA is completevoid
A SRAParticipant can join with the SRA at any time prior to the completion of an activityjoinSRA
(URL sraId, Long timelimit, String compensateUrl, String completeUrl, String leaveUrl, String statusUrl) Similar toSRAClientAPI.joinSRA(URL, Long, String)
but the various compensator urls are passed in explicitlyjoinSRAWithLinkHeader
(URL sraUrl, Long timelimit, String linkHeader) void
void
setCurrentSRA
(URL coordinatorUrl) Update the clients notion of the current coordinator.static URL
static URL
static String
-
Field Details
-
RTS_HTTP_CONTEXT_HEADER
- See Also:
-
RTS_HTTP_RECOVERY_HEADER
- See Also:
-
COORDINATOR_URL_PROP
- See Also:
-
COMMIT
- See Also:
-
PREPARE
- See Also:
-
ROLLBACK
- See Also:
-
STATUS
- See Also:
-
ONEPHASECOMMIT
- See Also:
-
TIMELIMIT_PARAM_NAME
- See Also:
-
CLIENT_ID_PARAM_NAME
- See Also:
-
PARENT_SRA_PARAM_NAME
- See Also:
-
DEFAULT_TIMEOUT_MILLIS
public static final long DEFAULT_TIMEOUT_MILLIS- See Also:
-
TX_COMMITTED
- See Also:
-
TX_ROLLEDBACK
- See Also:
-
TX_ROLLBACK_ONLY
- See Also:
-
-
Constructor Details
-
SRAClient
-
-
Method Details
-
postConstruct
@PostConstruct public void postConstruct() -
sraToURL
-
sraToURL
-
encodeURL
-
getSRAId
-
stripUid
-
toURL
- Throws:
InvalidSRAId
-
setCurrentSRA
Update the clients notion of the current coordinator. Warning all further operations will be performed on the SRA manager that created the passed in coordinator.- Parameters:
coordinatorUrl
- the full url of an SRA
-
startSRA
- Throws:
GenericSRAException
-
startSRA
public URL startSRA(URL parentSRA, String clientID, Long timeout, TimeUnit unit) throws GenericSRAException - Specified by:
startSRA
in interfaceSRAClientAPI
- Parameters:
parentSRA
- the parent SRA if this new SRA is nestedclientID
- Each client is expected to have a unique identity (which can be a URL). (optional)timeout
- Specifies the maximum time in seconds that the SRA will exist for. If the SRA is terminated because of a timeout, the SRA URL is deleted. All further invocations on the URL will return 404. The invoker can assume this was equivalent to a compensate operation. (optional, default to 0)unit
-- Returns:
- the id of the new SRA
- Throws:
GenericSRAException
-
cancelSRA
Description copied from interface:SRAClientAPI
Attempt to cancel an SRA Trigger the compensation of the SRA. All compensators will be triggered by the coordinator (ie the compensate message will be sent to each compensators). Upon termination, the URL is implicitly deleted. The invoker cannot know for sure whether the sra completed or compensated without enlisting a io.narayana.sra.- Specified by:
cancelSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)- Returns:
- compensator sepcific data provided by the application for nested SRA the API implementation will combine compensator data into a JSON encoded array. This means that compensators MUST not return any data that starts with the JSON array start token (ie a '[' character)
- Throws:
GenericSRAException
- Comms error
-
commitSRA
Description copied from interface:SRAClientAPI
Attempt to close an SRA Trigger the successful completion of the SRA. All compensators will be dropped by the coordinator. The complete message will be sent to the compensators. Upon termination, the URL is implicitly deleted. The invoker cannot know for sure whether the sra completed or compensated without enlisting a io.narayana.sra.- Specified by:
commitSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)- Returns:
- compensator sepcific data provided by the application for nested SRA the API implementation will combine compensator data into a JSON encoded array. This means that compensators MUST not return any data that starts with the JSON array start token (ie a '[' character)
- Throws:
GenericSRAException
- Comms error
-
joinSRAWithLinkHeader
public String joinSRAWithLinkHeader(URL sraUrl, Long timelimit, String linkHeader) throws GenericSRAException - Parameters:
sraUrl
- the URL of the SRA to jointimelimit
- how long the io.narayana.sra is prepared to wait for SRA completionlinkHeader
- io.narayana.sra protocol URLs in link header format (RFC 5988)- Returns:
- a recovery URL for this enlistment
- Throws:
GenericSRAException
- if the SRA coordinator failed to enlist the io.narayana.sra
-
joinSRA
Description copied from interface:SRAClientAPI
A SRAParticipant can join with the SRA at any time prior to the completion of an activity- Specified by:
joinSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)timelimit
- The time limit (in seconds) that the SRAParticipant can guarantee that it can compensate the work performed by the io.narayana.sra.demo.service. After this time period has elapsed, it may no longer be possible to undo the work within the scope of this (or any enclosing) SRA. It may therefore be necessary for the application or io.narayana.sra.demo.service to start other activities to explicitly try to compensate this work. The application or coordinator may use this information to control the lifecycle of a SRA. (required)compensatorUrl
- The resource path that the SRA coordinator will use to drive the compensator. Performing a GET on the compensator URL will return the current status of the compensator, or 404 if the compensator is no longer present. The following types must be returned by Compensators to indicate their current status: - Compensating: the SRAParticipant is currently compensating for the SRA; - Compensated: the SRAParticipant has successfully compensated for the SRA. - FailedToCompensate: the SRAParticipant was not able to compensate for the SRA. It must maintain information about the work it was to compensate until the coordinator sends it a forget message. - Completing: the SRAParticipant is tidying up after being told to complete. - Completed: the coordinator/io.narayana.sra has confirmed. - FailedToComplete: the SRAParticipant was unable to tidy-up. Performing a POST on URL/compensate will cause the compensator to compensate the work that was done within the scope of the SRA. Performing a POST on URL/complete will cause the compensator to tidy up and it can forget this SRA. (optional)- Throws:
GenericSRAException
- Comms error
-
joinSRA
public String joinSRA(URL sraId, Long timelimit, String compensateUrl, String completeUrl, String leaveUrl, String statusUrl) throws GenericSRAException Description copied from interface:SRAClientAPI
Similar toSRAClientAPI.joinSRA(URL, Long, String)
but the various compensator urls are passed in explicitly- Specified by:
joinSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)timelimit
- The time limit (in seconds) that the SRAParticipant can guarantee that it can compensate the work performed by the io.narayana.sra.demo.servicecompensateUrl
- Performing a POST onthis URL will cause the io.narayana.sra to compensate the work that was done within the scope of the SRA.completeUrl
- Performing a POST on this URL will cause the io.narayana.sra to tidy up and it can forget this transaction.leaveUrl
- Performing a PUT on this URL with cause the compensator to leave the SRAstatusUrl
- Performing a GET on this URL will return the status of the compensator- Throws:
GenericSRAException
-
getAllSRAs
Description copied from interface:SRAClientAPI
Returns all SRAs Gets both active and recovering SRAs- Specified by:
getAllSRAs
in interfaceSRAClientAPI
- Returns:
- List
- Throws:
GenericSRAException
- Comms error
-
getActiveSRAs
Description copied from interface:SRAClientAPI
Lookup active SRAs- Specified by:
getActiveSRAs
in interfaceSRAClientAPI
- Throws:
GenericSRAException
- Comms error
-
getRecoveringSRAs
Description copied from interface:SRAClientAPI
List recovering Long Running Actions Returns SRAs that are recovering (ie some compensators still need to be ran)- Specified by:
getRecoveringSRAs
in interfaceSRAClientAPI
- Throws:
GenericSRAException
- Comms error
-
isActiveSRA
Description copied from interface:SRAClientAPI
Indicates whether an SRA is active- Specified by:
isActiveSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)- Throws:
GenericSRAException
- Comms error
-
isCompensatedSRA
Description copied from interface:SRAClientAPI
Indicates whether an SRA was compensated- Specified by:
isCompensatedSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)- Throws:
GenericSRAException
- Comms error
-
isCompletedSRA
Description copied from interface:SRAClientAPI
Indicates whether an SRA is complete- Specified by:
isCompletedSRA
in interfaceSRAClientAPI
- Parameters:
sraId
- The unique identifier of the SRA (required)- Throws:
GenericSRAException
- Comms error
-
getTerminationUris
-
getUrl
-
getCurrent
Description copied from interface:SRAClientAPI
checks whether there is an SRA associated with the calling thread- Specified by:
getCurrent
in interfaceSRAClientAPI
- Returns:
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
getResponseData
- Specified by:
getResponseData
in interfaceSRAClientAPI
-