Package org.apache.sandesha2.storage.beans

Examples of org.apache.sandesha2.storage.beans.RMSBean


     
      if(internalSequenceId != null) {
        // Create a new Transaction
        transaction = storageManager.getTransaction();
       
        RMSBean bean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceId);
     
        if (bean != null) {           
          bean.setLastSendError(e);
          bean.setLastSendErrorTimestamp(System.currentTimeMillis());

          // Update the RMSBean
          storageManager.getRMSBeanMgr().update(bean);
        }
       
View Full Code Here


            String internalSequenceId = (String) msgCtx.getProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID);
            if (internalSequenceId == null) internalSequenceId = senderBean.getInternalSequenceID();
            if (internalSequenceId != null) {
                // Create a new Transaction
                transaction = storageManager.getTransaction();
                RMSBean bean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceId);
                TerminateManager.terminateSendingSide(bean, storageManager);

                OperationContext opCtx =
                        configurationContext.getOperationContext(bean.getApplicationMessageMessageId());
                if (opCtx != null) {
                    AxisOperation applicationAxisOperation = opCtx.getAxisOperation();
                    if (applicationAxisOperation != null) {
                        MessageReceiver msgReceiver = applicationAxisOperation.getMessageReceiver();
                        if ((msgReceiver != null) && (msgReceiver instanceof CallbackReceiver)) {
                            Object callback = ((CallbackReceiver) msgReceiver)
                                    .lookupCallback(bean.getApplicationMessageMessageId());
                            if (callback != null) {
                                AxisCallback axisCallback = ((AxisCallback) callback);
                                axisCallback.onError(new Exception(message));
                                axisCallback.onComplete();
                            }
View Full Code Here

 
  private void pollRMSSide(SequenceEntry entry, boolean force) throws AxisFault {
    if(log.isDebugEnabled()) log.debug("Enter: PollingManager::pollRMSSide, force: " + force);
   
    RMSBeanMgr rmsBeanManager = storageManager.getRMSBeanMgr();
    RMSBean findRMS = new RMSBean();
    findRMS.setInternalSequenceID(entry.getSequenceId());
    findRMS.setPollingMode(true);
    findRMS.setTerminated(false);
    RMSBean beanToPoll = rmsBeanManager.findUnique(findRMS);
   
    if(beanToPoll == null) {
      // This sequence must have been terminated, or deleted
      stopThreadForSequence(entry.getSequenceId(), true);
    } else {
      if (log.isDebugEnabled())
        log.debug("Polling rms " + beanToPoll);
      // The sequence is there, but we still only poll if we are expecting reply messages,
            // or if we don't have clean ack state. (We assume acks are clean, and only unset
            // this if we find evidence to the contrary).
          boolean cleanAcks = true;

      if (beanToPoll.getNextMessageNumber() > -1)
        cleanAcks = AcknowledgementManager.verifySequenceCompletion(beanToPoll.getClientCompletedMessages(), beanToPoll.getNextMessageNumber());
      long  repliesExpected = beanToPoll.getExpectedReplies();
      if((force ||  !cleanAcks || repliesExpected > 0) && beanToPoll.getReferenceMessageStoreKey() != null)
        pollForSequence(beanToPoll.getAnonymousUUID(), beanToPoll.getInternalSequenceID(), beanToPoll.getReferenceMessageStoreKey(), beanToPoll, entry);
    }

    if(log.isDebugEnabled()) log.debug("Exit: PollingManager::pollRMSSide");
  }
View Full Code Here

      // The sequence is still there, but if we have a running related sequence
      // that is not expecting replies then there is no need to poll.
      boolean doPoll = true;
      String outboundSequence = nextMsgBean.getOutboundInternalSequence();
      if(outboundSequence != null) {
        RMSBean findRMS = new RMSBean();
        findRMS.setInternalSequenceID(outboundSequence);
        findRMS.setTerminated(false);
        RMSBeanMgr mgr = storageManager.getRMSBeanMgr();
        RMSBean outbound = mgr.findUnique(findRMS);
        if(outbound != null && outbound.getExpectedReplies() == 0) {
          doPoll = false;
        }
      }
      if(force || doPoll)
        pollForSequence(null, null, nextMsgBean.getReferenceMessageKey(), nextMsgBean, entry);
View Full Code Here

      String rmVersion = null;
      // Check that the sequence is still valid
      boolean found = false;
      if(entry.isRmSource()) {
        RMSBean matcher = new RMSBean();
        matcher.setInternalSequenceID(sequenceId);
        matcher.setTerminated(false);
        RMSBean rms = storageManager.getRMSBeanMgr().findUnique(matcher);
        if(rms != null && !rms.isTerminated() && !rms.isTimedOut()) {
          sequenceId = rms.getSequenceID();         
          if (SequenceManager.hasSequenceTimedOut(rms, sequenceId, storageManager))         
            SequenceManager.finalizeTimedOutSequence(rms.getInternalSequenceID(), null, storageManager);
          else
            found = true;
          rmVersion = rms.getRMVersion();
        }
       
      } else {
        RMDBean matcher = new RMDBean();
        matcher.setSequenceID(sequenceId);
View Full Code Here

   */
  private void deleteTerminatedSequences(StorageManager storageManager) {
    if (log.isDebugEnabled())
      log.debug("Enter: Sender::deleteTerminatedSequences");

    RMSBean finderBean = new RMSBean();
    finderBean.setTerminated(true);
   
    Transaction transaction = null;
   
    try {
      transaction = storageManager.getTransaction();
     
      SandeshaPolicyBean propertyBean =
        SandeshaUtil.getPropertyBean(storageManager.getContext().getAxisConfiguration());     

      long deleteTime = propertyBean.getSequenceRemovalTimeoutInterval();
      if (deleteTime < 0)
        deleteTime = 0;

      if (deleteTime > 0) {
        // Find terminated sequences.
        List rmsBeans = storageManager.getRMSBeanMgr().find(finderBean);
       
        deleteRMSBeans(rmsBeans, propertyBean, deleteTime);
       
        finderBean.setTerminated(false);
        finderBean.setTimedOut(true);
       
        // Find timed out sequences
        rmsBeans = storageManager.getRMSBeanMgr().find(finderBean);
             
        deleteRMSBeans(rmsBeans, propertyBean, deleteTime);
View Full Code Here

    Iterator beans = rmsBeans.iterator();
   
    while (beans.hasNext())
    {
      RMSBean rmsBean = (RMSBean)beans.next();
      long timeNow = System.currentTimeMillis();
      long lastActivated = rmsBean.getLastActivatedTime();
      // delete sequences that have been timedout or deleted for more than
      // the SequenceRemovalTimeoutInterval
    
      if ((lastActivated + deleteTime) < timeNow) {
        if (log.isDebugEnabled())
          log.debug("Removing RMSBean " + rmsBean);
        storageManager.getRMSBeanMgr().delete(rmsBean.getCreateSeqMsgID());
        storageManager.removeMessageContext( rmsBean.getReferenceMessageStoreKey() );
      }       
    }

    if (log.isDebugEnabled())
      log.debug("Exit: Sender::deleteRMSBeans");
View Full Code Here

  public boolean insert(RMSBean bean) throws SandeshaStorageException {
   
    //checking weather there are any conflicting entries in the current table.
    List findBeanList = new ArrayList ();

    RMSBean findBean = new RMSBean ();
    if (bean.getSequenceID()!=null) {
      findBean.setSequenceID(bean.getSequenceID());
      findBeanList.add(findBean);
    }
   
    if (bean.getCreateSeqMsgID()!=null) {
      findBean = new RMSBean ();
      findBean.setCreateSeqMsgID(bean.getCreateSeqMsgID());
      findBeanList.add(findBean);
    }
   
    checkKeys (findBeanList);
   
View Full Code Here

          }
        }

        if (service == null && rmdBean == null) {
          //If this is the RMS of the sequence
          RMSBean rmsBean = SandeshaUtil.getRMSBeanFromSequenceId(storageManager, sequenceID);

          if(rmsBean != null){
            String serviceName = rmsBean.getServiceName();
            if (serviceName != null) {
              service = configurationContext.getAxisConfiguration()
                  .getService(serviceName);
            }
          }
View Full Code Here

    }

    SenderBeanMgr retransmitterMgr = storageManager.getSenderBeanMgr();
    RMSBeanMgr rmsBeanMgr = storageManager.getRMSBeanMgr();

    RMSBean rmsBean = rmsBeanMgr.retrieve(createSeqMsgId);
    if (rmsBean == null) {
      if (log.isDebugEnabled())
        log.debug("Exit: FaultManager::processCreateSequenceRefusedFault Unable to find RMSBean");
      return;
    }
   
  /*  if (rmsBean.getLastSendError() == null) {
      // Indicate that there was an error when sending the Create Sequence.
      rmsBean.setLastSendError(fault);
     
      // Update the RMSBean
      rmsBeanMgr.update(rmsBean);
      if (log.isDebugEnabled())
        log.debug("Exit: FaultManager::processCreateSequenceRefusedFault Allowing another CreateSequence attempt");
      return;
    }
*/
    SenderBean createSequenceSenderBean = retransmitterMgr.retrieve(createSeqMsgId);
    if (createSequenceSenderBean == null)
      throw new SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.createSeqEntryNotFound));

    // deleting the create sequence entry.
    retransmitterMgr.delete(createSeqMsgId);
     
    // Notify the clients of a failure
    notifyClientsOfFault(rmsBean.getInternalSequenceID(), storageManager, configCtx, fault);
   
    rmMsgCtx.pause();
   
    // Cleanup sending side.
    if (log.isDebugEnabled())
View Full Code Here

TOP

Related Classes of org.apache.sandesha2.storage.beans.RMSBean

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.