org.apache.juddi.api.impl
Class UDDIReplicationImpl

java.lang.Object
  extended by org.apache.juddi.api.impl.AuthenticatedService
      extended by org.apache.juddi.api.impl.UDDIReplicationImpl
All Implemented Interfaces:
Remote, UDDIReplicationPortType

public class UDDIReplicationImpl
extends AuthenticatedService
implements UDDIReplicationPortType


Field Summary
 
Fields inherited from class org.apache.juddi.api.impl.AuthenticatedService
AUTHTOKEN_ACTIVE, AUTHTOKEN_RETIRED
 
Constructor Summary
UDDIReplicationImpl()
           
 
Method Summary
 String doPing(DoPing body)
          This UDDI API message provides the means by which the current existence and replication readiness of a node may be obtained.
 List<ChangeRecord> getChangeRecords(String requestingNode, HighWaterMarkVectorType changesAlreadySeen, BigInteger responseLimitCount, HighWaterMarkVectorType responseLimitVector)
          The get_changeRecords message is used to initiate the replication of change records from one node to another.
 List<ChangeRecordIDType> getHighWaterMarks()
          This UDDI API message provides a means to obtain a list of highWaterMark element containing the highest known USN for all nodes in the replication graph.
 void notifyChangeRecordsAvailable(NotifyChangeRecordsAvailable body)
          

Nodes can inform other nodes that they have new change records available for consumption by replication by using this message.

 void transferCustody(TransferCustody body)
          Invoked by the target node in a custody transfer operation in response to transfer_entities, this API is used by the custodial node to ensure that permission has been granted to transfer custody of the entities that the target publisher has requested.
 
Methods inherited from class org.apache.juddi.api.impl.AuthenticatedService
getEntityPublisher
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UDDIReplicationImpl

public UDDIReplicationImpl()
Method Detail

doPing

public String doPing(DoPing body)
              throws DispositionReportFaultMessage
Description copied from interface: UDDIReplicationPortType
This UDDI API message provides the means by which the current existence and replication readiness of a node may be obtained.

Specified by:
doPing in interface UDDIReplicationPortType
Returns:
returns java.lang.String The response to this message must contain the operatorNodeID element of the pinged node.
Throws:
DispositionReportFaultMessage

getChangeRecords

public List<ChangeRecord> getChangeRecords(String requestingNode,
                                           HighWaterMarkVectorType changesAlreadySeen,
                                           BigInteger responseLimitCount,
                                           HighWaterMarkVectorType responseLimitVector)
                                    throws DispositionReportFaultMessage
Description copied from interface: UDDIReplicationPortType
The get_changeRecords message is used to initiate the replication of change records from one node to another. The caller, who wishes to receive new change records, provides as part of the message a high water mark vector. This is used by the replication source node to determine what change records satisfy the caller’s request.

More specifically, the recipient determines the particular change records that are returned by comparing the originating USNs in the caller’s high water mark vector with the originating USNs of each of the changes the recipient has seen from others or generated by itself.  The recipient SHOULD only return change records that have originating USNs that are greater than those listed in the changesAlreadySeen highWaterMarkVector and less than the limit required by either the responseLimitCount or the responseLimitVector.

In nodes that support pre-bundled replication responses, the recipient of the get_changeRecords message MAY return more change records than requested by the caller.  In this scenario, the caller MUST also be prepared to deal with such redundant changes where a USN is less than the USN specified in the changesAlreadySeen highWaterMarkVector.

The response to a get_changeRecords message is a changeRecords element. Under all circumstances, all change records returned therein by the message recipient MUST be returned sorted in increasing order according to the recipient’s local USN.

Specified by:
getChangeRecords in interface UDDIReplicationPortType
Parameters:
requestingNode - requestingNode: The requestingNode element provides the identity of the calling node. This is the unique key for the calling node and SHOULD be specified within the Replication Configuration Structure.
changesAlreadySeen - changesAlreadySeen: The changesAlreadySeen element, if present, indicates changes from each node that the requestor has successfully processed, and thus which should not be resent, if possible.
responseLimitCount - responseLimitCount or responseLimitVector: A caller MAY place an upper bound on the number of change records he wishes to receive in response to this message by either providing a integer responseLimitCount, or, using responseLimitVector, indicating for each node in the graph the first change originating there that he does not wish to be returned.
responseLimitVector - responseLimitCount or responseLimitVector: A caller MAY place an upper bound on the number of change records he wishes to receive in response to this message by either providing a integer responseLimitCount, or, using responseLimitVector, indicating for each node in the graph the first change originating there that he does not wish to be returned.
Returns:
returns java.util.List A node will respond with the corresponding changeRecords.
Throws:
DispositionReportFaultMessage

getHighWaterMarks

public List<ChangeRecordIDType> getHighWaterMarks()
                                           throws DispositionReportFaultMessage
Description copied from interface: UDDIReplicationPortType
This UDDI API message provides a means to obtain a list of highWaterMark element containing the highest known USN for all nodes in the replication graph.

Specified by:
getHighWaterMarks in interface UDDIReplicationPortType
Returns:
returns java.util.List

A highWaterMarks element is returned that contains a list of highWaterMark elements listing the highest known USN for all nodes in the replication communication graph. See Section 7.2.4 High Water Mark Vector for details.

If the highest originatingUSN for a specific node within the registry is not known, then the responding node MUST return a highWaterMark for that node with an originatingUSN of 0 (zero).

<highWaterMark>

   <nodeID>…</nodeID>

   <originatingUSN>0</originatingUSN>

</highWaterMark>

Throws:
DispositionReportFaultMessage

notifyChangeRecordsAvailable

public void notifyChangeRecordsAvailable(NotifyChangeRecordsAvailable body)
                                  throws DispositionReportFaultMessage
Description copied from interface: UDDIReplicationPortType

Nodes can inform other nodes that they have new change records available for consumption by replication by using this message. This provides a proactive means through which replication can be initiated, potentially reducing the latency of the dissemination of changes throughout the set of UDDI nodes.  The notify_changeRecordsAvailable message is the predecessor to the get_changeRecords message.

Each node MUST respond with the message defined within the Section 7.4.2.3 Returns when a valid notify_changeRecordsAvailable message is received. 

At an interval set by policy after the origination of new change records within its node, a node SHOULD send this message to each of the other nodes with which it is configured to communicate this message according to the currently configured communication graph. It SHOULD ignore any response (errors or otherwise) returned by such invocations.

Specified by:
notifyChangeRecordsAvailable in interface UDDIReplicationPortType
Parameters:
body -

·         notifyingNode: The parameter to this message indicates that the notifyingNode has available the indicated set of changes for request via get_changeRecords.

·         changesAvailable: When sending the notify_changeRecordsAvailable message, a node shall provide a high water mark vector identifying what changes it knows to exist both locally and on other nodes with which it might have had communications. Typically, no communication graph restrictions are present for the notify_changeRecordsAvailable message.  In the event that the sending node does not know the USN for a specific node within the CommunicationGraph, the changesAvailable element MAY contain a highWaterMark for that node with an unspecified nodeID element.

Throws:
DispositionReportFaultMessage

transferCustody

public void transferCustody(TransferCustody body)
                     throws DispositionReportFaultMessage
Description copied from interface: UDDIReplicationPortType
Invoked by the target node in a custody transfer operation in response to transfer_entities, this API is used by the custodial node to ensure that permission has been granted to transfer custody of the entities that the target publisher has requested. The transfer_custody API is in the replication namespace since it is sent from one node to another node in a registry using replication.

Specified by:
transferCustody in interface UDDIReplicationPortType
Parameters:
body -

·         transferToken: Required argument obtained from the custodial node via a call to get_transferToken by the publisher requesting a transfer of custody. The transferToken contains an opaque token, an expiration date, and the identity of the custodial node.  The transferToken represents permission to transfer the entities that have been identified via a prior call to the get_transferToken API. The custodial node MUST verify that the transferToken has not expired and that the businessKey and tModelKey elements that the target publisher has provided in transfer_entities are allowed to be transferred as captured in the transfer token’s opaqueToken.

·         keyBag: One or more uddiKeys associated with businessEntity or tModel entities that the target publisher is requesting ownership of at the target node in the registry. The set of keys must be the same as the set of keys in the keyBag of the get_transferToken API call from which the given transferToken was once obtained.

·         transferOperationalInfo: Required argument. The accepting publisher’s authorizedName and the accepting node’s nodeID are provided on input to the relinquishing custodial node to allow it to update the operationalInfo associated with the entities whose custody is being transferred. The authorizedName and nodeID elements are both required. The accepting node’s nodeID is obtained via the Replication Configuration structure as described in Section 7.5.2 Configuration of a UDDI Node – operator element. The authorizedName is obtained from the call to transfer_entities by the requesting publisher.

Throws:
DispositionReportFaultMessage


Copyright © 2004-2013 The Apache Software Foundation. All Rights Reserved.