Marshall Schor commented on UIMA-2977:

Adding Burn's reply from the dev list, slightly edited:
re: *The PEAR support version of this just forwards calls relating to external 
resources and cas pools to the parent.*
My understanding is that the RM's used by pears are created by copying the 5 
resource maps and the CasManager --- so destroying one pear's RM would destroy 
the resources shared by the others.  (Marshall says: true. But remember, the 
framework never calls destroy on the Resource Manager; it is up to the overall 
application to decide if and when to do this.)

We also have a use case where multiple pipelines need to share resources but 
can't share the CasManager as their typesystems are different, and may be 
created much later.  We can use the 5-arg constructor to create a subclassed 
Resource Manager, but this has a problem in that it doesn't share the resources 
loaded by the original pipeline.  UIMA-5146 will allow a better way to create 
the other Resource Manager such that it **does** share the resources loaded by 
the original pipeline.

> destroy method of shared resources never called
> -----------------------------------------------
>                 Key: UIMA-2977
>                 URL: https://issues.apache.org/jira/browse/UIMA-2977
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>            Reporter: Richard Eckart de Castilho
>            Assignee: Marshall Schor
>              Labels: Resources
>             Fix For: 3.0.0SDKexp
> Apparently the ResourceManager and the resources created by the manager do 
> not participate in the usual component life cycle. On other components, such 
> as analysis engines or readers, the destroy() method is called when the 
> component is disposed of. External resources never get notified when they are 
> no longer needed. At least any resources derived from Resource (e.g. 
> DataResource and ParametrizedDataResource) should be notified. The 
> SharedResourceObject interface does not define any such life cycle callback.
> As a side-note: An alternative to the rather heavy-weight Resource interface 
> of UIMA maybe be small life cycle interfaces such as the Spring 
> InitializingBean and DisposableBean interfaces, or Java annotations marking 
> initialization and destruction methods (e.g. @PostConstruct and @PreDestroy).

This message was sent by Atlassian JIRA

Reply via email to