{
final EndpointReferenceType endpointReference = coordinationContext.getRegistrationService() ;
final AddressingContext addressingContext = AddressingContext.createRequestContext(endpointReference, messageID) ;
final RequestCallback callback = new RequestCallback() ;
final RegistrationRequesterProcessor registrationRequester = RegistrationRequesterProcessor.getRequester() ;
registrationRequester.registerCallback(messageID, callback) ;
try
{
RegistrationCoordinatorClient.getClient().sendRegister(addressingContext, protocolIdentifier, participantProtocolService) ;
callback.waitUntilTriggered() ;
}
catch (final IOException ioe)
{
throw new SoapFault(ioe) ;
}
finally
{
registrationRequester.removeCallback(messageID) ;
}
if (callback.hasFailed())
{
throw new SoapFault(SoapFaultType.FAULT_RECEIVER, null, WSCLogger.log_mesg.getString("com.arjuna.wsc.RegistrationCoordinator_1")) ;