public int createDurableFromRemote ( String subName , SelectionCriteria criteria , String user , boolean isCloned , boolean isNoLocal , boolean isSIBServerSubject ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "createDurableFromRemote" , new Object [ ] { subName , criteria , user , Boolean . valueOf ( isSIBServerSubject ) } ) ; int status = DurableConstants . STATUS_OK ; // Create a ConsumerDispatcherState for the local call ConsumerDispatcherState subState = new ConsumerDispatcherState ( subName , definition . getUUID ( ) , criteria , isNoLocal , messageProcessor . getMessagingEngineName ( ) , definition . getName ( ) , getBus ( ) ) ; // Set the security id into the CD state subState . setUser ( user , isSIBServerSubject ) ; //defect 259036 - we need to enable sharing of the durable subscription subState . setIsCloned ( isCloned ) ; try { _pubSubRealization . createLocalDurableSubscription ( subState , null ) ; } catch ( SIDurableSubscriptionAlreadyExistsException e ) { // No FFDC code needed status = DurableConstants . STATUS_SUB_ALREADY_EXISTS ; } catch ( Throwable e ) { // FFDC FFDCFilter . processException ( e , "com.ibm.ws.sib.processor.impl.BaseDestinationHandler.createDurableFromRemote" , "1:4436:1.700.3.45" , this ) ; // FFDC keeps the local broker happy, but we still need to return // a status to keep the remote ME live. status = DurableConstants . STATUS_SUB_GENERAL_ERROR ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "createDurableFromRemote" , Integer . valueOf ( status ) ) ; return status ; }
Handle a remote request to create a local durable subscription .