public class BitarchiveMonitorServer extends ArchiveMessageHandler implements Observer, CleanupIF
Batch jobs are received on the BAMON-channel, and resent to all bitarchives, that are considered live by the bitarchive monitor.
Lets the bitarchive monitor handle batch replies from the bitarchives, and observes it for when the batch job is done. Then constructs a reply from the data given, and sends it back to the originator.
Also registers signs of life from the bitarchives in the bitarchive monitor.
Modifier | Constructor and Description |
---|---|
protected |
BitarchiveMonitorServer()
Creates an instance of a BitarchiveMonitorServer.
|
Modifier and Type | Method and Description |
---|---|
void |
cleanup()
Closes this BitarchiveMonitorServer cleanly.
|
void |
close()
Close down this BitarchiveMonitor.
|
static BitarchiveMonitorServer |
getInstance()
Returns the unique instance of a BitarchiveMonitorServer.
|
void |
update(Observable o,
Object arg)
Handles notifications from the bitarchive monitor, that a batch job is complete.
|
void |
visit(BatchEndedMessage beMsg)
This is the message handling method for BatchEndedMessages.
|
void |
visit(BatchMessage inbMsg)
This is the message handling method for BatchMessages.
|
void |
visit(CorrectMessage cm)
This is the first step in correcting a bad entry.
|
void |
visit(GetAllChecksumsMessage msg)
Method for handling the GetAllChecksumsMessage.
|
void |
visit(GetAllFilenamesMessage msg)
Method for handling the GetAllFilenamesMessage.
|
void |
visit(GetChecksumMessage msg)
Method for handling the GetChecksumMessage.
|
void |
visit(HeartBeatMessage hbMsg)
This is the message handling method for HeartBeatMessages.
|
void |
visit(RemoveAndGetFileMessage msg)
This is the second step in correcting a bad entry.
|
void |
visit(UploadMessage msg)
This is the third step in correcting a bad entry.
|
protected BitarchiveMonitorServer() throws IOFailure
IOFailure
- - if an error with the JMSConnection occurspublic static BitarchiveMonitorServer getInstance() throws IOFailure
IOFailure
- - if an error with the JMSConnection occurspublic void visit(BatchMessage inbMsg) throws ArgumentNotValid
A new BatchMessage is created with the same Job as the incoming BatchMessage and sent off to all live bitarchives.
The incoming and outgoing batch messages are then registered at the bitarchive monitor.
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
inbMsg
- The message receivedArgumentNotValid
- If the BatchMessage is null.public void visit(BatchEndedMessage beMsg) throws ArgumentNotValid
This delegates the handling of the reply to the bitarchive monitor, which will notify us if the batch job is now done.
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
beMsg
- The BatchEndedMessage to be handled.ArgumentNotValid
- If the BatchEndedMessage is null.public void visit(HeartBeatMessage hbMsg) throws ArgumentNotValid
Registers a sign of life from a bitarchive.
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
hbMsg
- the message that represents the sign of lifeArgumentNotValid
- If the HeartBeatMessage is null.public void visit(CorrectMessage cm) throws ArgumentNotValid
In the first stage, a RemoveAndGetFileMessage is sent, and then the CorrectMessage is put in the map along the ID of the RemoveAndGetFileMessage.
See the correctMessages Map.
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
cm
- The CorrectMessage to handle.ArgumentNotValid
- If the CorrectMessage is null.public void visit(RemoveAndGetFileMessage msg) throws ArgumentNotValid
In the second stage, the reply of the RemoveAndGetFileMessage is used to extract the CorrectMessage from the Map. The CorrectMessage is then updated with the results from the RemoveAndGetFileMessage. Then an UploadMessage is send with the 'correct' file, where the ID of the UploadMessage is put into the map along the CorrectMessage.
See the correctMessages Map.
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
msg
- The RemoteAndGetFileMessage.ArgumentNotValid
- If the RemoveAndGetFileMessage is null.public void visit(UploadMessage msg) throws ArgumentNotValid
In the third stage, the reply of the UploadMessage is used to extract the CorrectMessage from the map again, and the results of the UploadMessage is used to update the UploadMessage, which is then returned.
See the correctMessages Map.
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
msg
- The reply of the UploadMessage.ArgumentNotValid
- If the UploadMessage is null.public void visit(GetAllChecksumsMessage msg) throws ArgumentNotValid
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
msg
- The GetAllChecksumsMessage, which will be made into a batchjob and sent to the bitarchives.ArgumentNotValid
- If the GetAllChecksumsMessage is null.public void visit(GetAllFilenamesMessage msg) throws ArgumentNotValid
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
msg
- The GetAllFilenamesMessage, which will be made into a batchjob and sent to the bitarchives.ArgumentNotValid
- If the GetAllFilenamesMessage is null.public void visit(GetChecksumMessage msg) throws ArgumentNotValid
visit
in interface ArchiveMessageVisitor
visit
in class ArchiveMessageHandler
msg
- The GetAllChecksumsMessage, which will be made into a batchjob and sent to the bitarchives.ArgumentNotValid
- If the GetChecksumMessage is null.public void update(Observable o, Object arg)
Spawns a new thread in which all the results are wrapped and sent back in a reply to the originator of this batch request.
update
in interface Observer
o
- the observable object. Should always be the bitarchive monitor. If it isn't, this notification will be
logged and ignored.arg
- an argument passed from the bitarchive monitor. This should always be a batch status object indicating
the end of that batchjob. If it isn't, this notification will be logged and ignored.public void close()
Copyright © 2005–2018 The Royal Danish Library, the National Library of France and the Austrian National Library.. All rights reserved.