[
https://issues.apache.org/jira/browse/UIMA-2977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15586757#comment-15586757
]
Marshall Schor edited comment on UIMA-2977 at 10/18/16 9:46 PM:
----------------------------------------------------------------
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.
was (Author: schor):
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
(v6.3.4#6332)