Class BaseUIMAAsynchronousEngineCommon_impl

java.lang.Object
org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl
All Implemented Interfaces:
javax.jms.MessageListener, UimaAsynchronousEngine
Direct Known Subclasses:
BaseUIMAAsynchronousEngine_impl

public abstract class BaseUIMAAsynchronousEngineCommon_impl extends Object implements UimaAsynchronousEngine, javax.jms.MessageListener
  • Field Details

  • Constructor Details

    • BaseUIMAAsynchronousEngineCommon_impl

      public BaseUIMAAsynchronousEngineCommon_impl()
  • Method Details

    • getEndPointName

      public abstract String getEndPointName() throws Exception
      Throws:
      Exception
    • createTextMessage

      protected abstract javax.jms.TextMessage createTextMessage() throws Exception
      Throws:
      Exception
    • createBytesMessage

      protected abstract javax.jms.BytesMessage createBytesMessage() throws Exception
      Throws:
      Exception
    • setMetaRequestMessage

      protected abstract void setMetaRequestMessage(javax.jms.Message msg) throws Exception
      Throws:
      Exception
    • setCASMessage

      protected abstract void setCASMessage(String casReferenceId, org.apache.uima.cas.CAS aCAS, javax.jms.Message msg) throws Exception
      Throws:
      Exception
    • setCASMessage

      protected abstract void setCASMessage(String casReferenceId, String aSerializedCAS, javax.jms.Message msg) throws Exception
      Throws:
      Exception
    • setCASMessage

      protected abstract void setCASMessage(String casReferenceId, byte[] aSerializedCAS, javax.jms.Message msg) throws Exception
      Throws:
      Exception
    • setCPCMessage

      public abstract void setCPCMessage(javax.jms.Message msg) throws Exception
      Throws:
      Exception
    • initialize

      public abstract void initialize(Map anApplicationContext) throws org.apache.uima.resource.ResourceInitializationException
      Description copied from interface: UimaAsynchronousEngine
      Initializes UIMA asynchronous client using configuration parameters provided in a Map object. It creates a connection to a service queue managed by a Broker as specified in the parameters. A temporary reply queue is also created with a JMS listener attached to it. Once the connections are made and the listener is started the method sends getMeta request to the UIMA AS service and waits for a response. When the reply to getMeta is received the UIMA AS client is fully initialized and notifies an application by calling UimaASStatusCallbackListener.initializationComplete(EntityProcessStatus) on the application listener.
      Specified by:
      initialize in interface UimaAsynchronousEngine
      Parameters:
      anApplicationContext - - configuration containing UIMA EE Service Broker URI, service queue name, timeout value, reply window size, and CAS Pool size.
      Throws:
      org.apache.uima.resource.ResourceInitializationException
    • cleanup

      protected abstract void cleanup() throws Exception
      Throws:
      Exception
    • deploy

      public abstract String deploy(String[] aDeploymentDescriptorList, Map anApplicationContext) throws Exception
      Description copied from interface: UimaAsynchronousEngine
      Deploys a single UIMA AS container and all services defined in provided deployment descriptors. Each deployment descriptor contains an assembly of related UIMA AS services. This method is synchronous and will block until all UIMA AS services are completely deployed and initialized. If there is a problem deploying any of the UIMA AS services the container is destroyed and exception thrown.
      Specified by:
      deploy in interface UimaAsynchronousEngine
      Parameters:
      aDeploymentDescriptorList - - a list of deployment descriptors to deploy in a container.
      anApplicationContext - - initialization parameters needed to configure the client and services
      Returns:
      - the id of the container in which the UIMA AS services were deployed
      Throws:
      Exception - - if there was a problem deploying the container or UIMA AS services.
    • deploySpringContainer

      protected abstract String deploySpringContainer(String[] springContextFiles) throws org.apache.uima.resource.ResourceInitializationException
      Throws:
      org.apache.uima.resource.ResourceInitializationException
    • getDispatcher

      protected abstract MessageSender getDispatcher()
    • initializeConsumer

      protected abstract void initializeConsumer(String aBrokerURI, javax.jms.Connection connection) throws Exception
      Throws:
      Exception
    • addStatusCallbackListener

      public void addStatusCallbackListener(UimaAsBaseCallbackListener aListener)
      Description copied from interface: UimaAsynchronousEngine
      Registers application specific listener. Via this listener the application receives call-backs. More than one listener can be added.
      Specified by:
      addStatusCallbackListener in interface UimaAsynchronousEngine
      Parameters:
      aListener - - application listener object to add
    • getSerializationStrategy

      public String getSerializationStrategy()
      Description copied from interface: UimaAsynchronousEngine
      Returns serialization strategy for the remote service. All CASes will be serialized according to the specified serialization. Either xmi or binary
      Specified by:
      getSerializationStrategy in interface UimaAsynchronousEngine
      Returns:
      String type of serialization for CASes
    • setSerializationStrategy

      protected void setSerializationStrategy(String aSerializationStrategy)
    • serializeCAS

      protected String serializeCAS(org.apache.uima.cas.CAS aCAS, org.apache.uima.cas.impl.XmiSerializationSharedData serSharedData) throws Exception
      Serializes a given CAS.
      Parameters:
      aCAS - - CAS to serialize
      Returns:
      - serialized CAS
      Throws:
      Exception
    • serializeCAS

      protected String serializeCAS(org.apache.uima.cas.CAS aCAS) throws Exception
      Throws:
      Exception
    • removeStatusCallbackListener

      public void removeStatusCallbackListener(UimaAsBaseCallbackListener aListener)
      Description copied from interface: UimaAsynchronousEngine
      Unregisters named application listener.
      Specified by:
      removeStatusCallbackListener in interface UimaAsynchronousEngine
      Parameters:
      aListener - - application listener to remove
    • onBeforeMessageSend

      public void onBeforeMessageSend(UimaASProcessStatus status)
    • setCollectionReader

      public void setCollectionReader(org.apache.uima.collection.CollectionReader aCollectionReader) throws org.apache.uima.resource.ResourceInitializationException
      Description copied from interface: UimaAsynchronousEngine
      Registers a CollectionReader instance to process a Collection. This method must be called first, before calling UimaAsynchronousEngine.process() method.
      Specified by:
      setCollectionReader in interface UimaAsynchronousEngine
      Parameters:
      aCollectionReader - - instance of a CollectionReader
      Throws:
      org.apache.uima.resource.ResourceInitializationException
    • acquireCpcReadySemaphore

      protected void acquireCpcReadySemaphore()
    • collectionProcessingComplete

      public void collectionProcessingComplete() throws org.apache.uima.resource.ResourceProcessException
      Description copied from interface: UimaAsynchronousEngine
      Sends a Collection Processing Complete (CPC) request to a UIMA AS Service and blocks waiting for a reply. The method blocks until the service replies or a timeout occurs. Before returning, this method will notify an application of completing the Collection Processing Complete request using registered listener
      Specified by:
      collectionProcessingComplete in interface UimaAsynchronousEngine
      Throws:
      org.apache.uima.resource.ResourceProcessException
    • doStop

      public void doStop()
    • getCAS

      public org.apache.uima.cas.CAS getCAS() throws Exception
      Returns a CAS. If multiple threads call this method, the order of each request is preserved. The oldest waiting thread receives the CAS. Each request for a CAS is queued, and when the CAS becomes available the oldest waiting thread will receive it for processing.
      Specified by:
      getCAS in interface UimaAsynchronousEngine
      Returns:
      - new CAS instance fetched from the CAS pool
      Throws:
      Exception
    • reset

      protected void reset()
    • sendMetaRequest

      protected void sendMetaRequest() throws Exception
      Throws:
      Exception
    • waitForCpcReply

      protected void waitForCpcReply()
    • waitForMetadataReply

      protected void waitForMetadataReply()
      Blocks while trying to acquire a semaphore awaiting receipt of GetMeta Reply. When the GetMeta is received, or there is a timeout, or the client stops the semaphore will be released.
    • getPerformanceReport

      public String getPerformanceReport()
      Description copied from interface: UimaAsynchronousEngine
      Not implemented
      Specified by:
      getPerformanceReport in interface UimaAsynchronousEngine
      Returns:
      null
    • process

      public void process() throws org.apache.uima.resource.ResourceProcessException
      Description copied from interface: UimaAsynchronousEngine
      Initiates processing of a collection. This method should be only called after initialize() has been called and an instance of a CollectionReader is provided via UimaAsynchronousEngine.setCollectionReader(CollectionReader). This method blocks until the CollectionReader finishes processing the entire collection. Status of the processing can be obtained by registering a listener with the UimaAsynchronousEngine.addStatusCallbackListener(UimaAsBaseCallbackListener) method.

      The method is synchronized to allow processing of only one collection at a time. The application must wait with processing another collection until it receives notification via a listener UimaASStatusCallbackListener.collectionProcessComplete(EntityProcessStatus aStatus)

      Specified by:
      process in interface UimaAsynchronousEngine
      Throws:
      org.apache.uima.resource.ResourceProcessException - - if there is a problem processing the Collection
    • getCache

      protected ConcurrentHashMap getCache()
    • delayCasIfDelegateInTimedOutState

      public boolean delayCasIfDelegateInTimedOutState(String aCasReferenceId) throws AsynchAEException
      Checks the state of a delegate to see if it is in TIMEOUT State. If it is, push the CAS id onto a list of CASes pending dispatch. The delegate is in a questionable state and the aggregate sends a ping message to check delegate's availability. If the delegate responds to the ping, all CASes in the pending dispatch list will be immediately dispatched.
      Throws:
      AsynchAEException
    • sendCAS

      public String sendCAS(org.apache.uima.cas.CAS aCAS) throws org.apache.uima.resource.ResourceProcessException
      Sends a given CAS for analysis to the UIMA EE Service.
      Specified by:
      sendCAS in interface UimaAsynchronousEngine
      Parameters:
      aCAS - - a CAS to analyze.
      Returns:
      - returns a unique identifier associated with the sent CAS
      Throws:
      org.apache.uima.resource.ResourceProcessException
    • handleCollectionProcessCompleteReply

      protected void handleCollectionProcessCompleteReply(javax.jms.Message message) throws Exception
      Handles response to CollectionProcessComplete request.
      Throws:
      Exception
    • handleMetadataReply

      protected void handleMetadataReply(javax.jms.Message message) throws Exception
      Handles response to GetMeta Request. Deserializes ResourceMetaData and initializes CasManager.
      Parameters:
      message - - jms message containing serialized ResourceMetaData
      Throws:
      Exception
    • notifyListeners

      protected void notifyListeners(org.apache.uima.cas.CAS aCAS, org.apache.uima.collection.EntityProcessStatus aStatus, int aCommand)
    • cancelTimer

      protected void cancelTimer(String identifier)
    • wakeUpSendThread

      protected void wakeUpSendThread(BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest) throws Exception
      Throws:
      Exception
    • handleServiceInfo

      protected void handleServiceInfo(javax.jms.Message message) throws Exception
      Handles a ServiceInfo message returned from the Cas Multiplier. The primary purpose of this message is to provide the client with a dedicated queue object where the client may send messages to the specific CM service instance. An example of this would be a stop request that client needs to send to the specific Cas Multiplier.
      Parameters:
      message - - message received from a service
      Throws:
      Exception
    • decrementOutstandingCasCounter

      protected void decrementOutstandingCasCounter()
    • handleProcessReply

      protected void handleProcessReply(javax.jms.Message message, boolean doNotify, org.apache.uima.util.ProcessTrace pt) throws Exception
      Handles response to Process CAS request. If the message originated in a service that is running in a separate jvm (remote), deserialize the CAS and notify the application of the completed analysis via application listener.
      Parameters:
      message - - jms message containing serialized CAS
      Throws:
      Exception
    • handleNonProcessException

      protected void handleNonProcessException(Exception exception) throws Exception
      Throws:
      Exception
    • handleException

      protected void handleException(Exception exception, String casReferenceId, String inputCasReferenceId, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest, boolean doNotify) throws Exception
      Throws:
      Exception
    • handleException

      protected void handleException(Exception exception, String casReferenceId, String inputCasReferenceId, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest, boolean doNotify, boolean rethrow) throws Exception
      Throws:
      Exception
    • handleException

      protected void handleException(javax.jms.Message message, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest, boolean doNotify) throws Exception
      Throws:
      Exception
    • removeFromCache

      protected void removeFromCache(String aCasReferenceId)
    • deserialize

      protected org.apache.uima.cas.CAS deserialize(String aSerializedCAS, org.apache.uima.cas.CAS aCAS) throws Exception
      Throws:
      Exception
    • deserialize

      protected org.apache.uima.cas.CAS deserialize(String aSerializedCAS, org.apache.uima.cas.CAS aCAS, org.apache.uima.cas.impl.XmiSerializationSharedData deserSharedData, boolean deltaCas) throws Exception
      Throws:
      Exception
    • deserialize

      protected org.apache.uima.cas.CAS deserialize(byte[] binaryData, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest) throws Exception
      Throws:
      Exception
    • deserializeCAS

      protected org.apache.uima.cas.CAS deserializeCAS(String aSerializedCAS, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest) throws Exception
      Throws:
      Exception
    • deserializeCAS

      protected org.apache.uima.cas.CAS deserializeCAS(byte[] aSerializedCAS, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest) throws Exception
      Throws:
      Exception
    • deserializeCAS

      protected org.apache.uima.cas.CAS deserializeCAS(byte[] aSerializedCAS, org.apache.uima.cas.CAS aCas) throws Exception
      Throws:
      Exception
    • deserializeCAS

      protected org.apache.uima.cas.CAS deserializeCAS(String aSerializedCAS, BaseUIMAAsynchronousEngineCommon_impl.ClientRequest cachedRequest, boolean deltaCas) throws Exception
      Throws:
      Exception
    • deserializeCAS

      protected org.apache.uima.cas.CAS deserializeCAS(String aSerializedCAS, String aCasPoolName) throws Exception
      Throws:
      Exception
    • deserializeCAS

      protected org.apache.uima.cas.CAS deserializeCAS(byte[] aSerializedCAS, String aCasPoolName) throws Exception
      Throws:
      Exception
    • onMessage

      public void onMessage(javax.jms.Message message)
      Listener method receiving JMS Messages from the response queue.
      Specified by:
      onMessage in interface javax.jms.MessageListener
    • getMetaData

      public org.apache.uima.resource.metadata.ProcessingResourceMetaData getMetaData() throws org.apache.uima.resource.ResourceInitializationException
      Gets the ProcessingResourceMetadata for the asynchronous AnalysisEngine.
      Specified by:
      getMetaData in interface UimaAsynchronousEngine
      Throws:
      org.apache.uima.resource.ResourceInitializationException
    • sendAndReceiveCAS

      public String sendAndReceiveCAS(org.apache.uima.cas.CAS aCAS, org.apache.uima.util.ProcessTrace pt) throws org.apache.uima.resource.ResourceProcessException
      This is a synchronous method which sends a message to a destination and blocks waiting for a reply.
      Throws:
      org.apache.uima.resource.ResourceProcessException
    • sendAndReceiveCAS

      public String sendAndReceiveCAS(org.apache.uima.cas.CAS aCAS) throws org.apache.uima.resource.ResourceProcessException
      Description copied from interface: UimaAsynchronousEngine
      This synchronous method sends a given CAS to a UIMA AS service and waits for response. The method either returns a CAS with the result of analysis or throws an exception. It doesn't use call-backs through a registered application listener.
      Specified by:
      sendAndReceiveCAS in interface UimaAsynchronousEngine
      Parameters:
      aCAS - - a CAS to analyze.
      Returns:
      - a unique id assigned to the CAS
      Throws:
      org.apache.uima.resource.ResourceProcessException
    • notifyOnTimout

      protected void notifyOnTimout(org.apache.uima.cas.CAS aCAS, String anEndpoint, int aTimeoutKind, String casReferenceId)
    • getMessageProducer

      protected javax.jms.MessageProducer getMessageProducer(javax.jms.Destination destination) throws Exception
      Throws:
      Exception
    • onProducerInitialized

      protected void onProducerInitialized()
      Called when the producer thread is fully initialized
    • connectionOpen

      public boolean connectionOpen()
    • recoverSharedConnectionIfClosed

      public boolean recoverSharedConnectionIfClosed()
      Continuously tries to recover connection a broker. it gives up when the client is stopped or the connection is recovered.
    • onException

      public void onException(Exception aFailure, String aDestination)
    • setReleaseCASMessage

      protected void setReleaseCASMessage(javax.jms.TextMessage msg, String aCasReferenceId) throws Exception
      Throws:
      Exception