[ https://issues.apache.org/jira/browse/UIMA-1713?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jerry Cwiklik closed UIMA-1713. ------------------------------- Resolution: Fixed Fix Version/s: 2.3AS Modified UIMA AS client code to create ActiveMQConnectionFactory on demand using class constructor instead of using JNDI. The ConnectionFactory is no longer a singleton object cached in the JNDI repository. A ConnectionFactory is created during initialization of the UIMA AS client and while recovering from a lost connection. This fixes Class Loader problem described in this JIRA. Unable to reproduce a problem with JMX registry although it *is* a shared Resource in a JVM. > Java and UIMA things holding on to objects loaded via Resource Manager fail > when switching to another Resource Manager class loader instance > -------------------------------------------------------------------------------------------------------------------------------------------- > > Key: UIMA-1713 > URL: https://issues.apache.org/jira/browse/UIMA-1713 > Project: UIMA > Issue Type: Bug > Components: Async Scaleout > Affects Versions: 2.3AS > Reporter: Marshall Schor > Assignee: Jerry Cwiklik > Priority: Blocker > Fix For: 2.3AS > > > JNDI and JMX both use "system-wide" "registries" of objects. These objects, > for uima-as, can be loaded from a Resource Manager in cases where the uima-as > classes are on the Resource Manager's classpath. A use case where this can > occur is a UIMA aggregate containg 2 PEAR descriptors, each having a > potentially different version of uima-as in the PEAR's classpath, being used > as a client to a remote uima-as service. (Note that the uima-as client for > this is represented in UIMA as a "custom resource specifier", so this use > case can also apply to future "custom resources".) > The system-wide registries for JNDI and JMX use a string handle to locate > objects, and cache found objects in the registry. The first use loads the > object, using the class loader in effect at the place where the lookup is > requested. For uima-as being used as a custom resource, the class loader > used is the UIMA class loader associated with the current resource manager. > If, subsequently, another resource manager instance (actually, another class > loader instance within the UIMA resource manager) is used to run the uima-as > classes, the lookups by name for objects in these registries will succeed, > but will return objects that were loaded under a different class loader. > This causes ClassCastExceptions, because the superclasses / interfaces used > in the currently running code (running under the 2nd classloader) no longer > are the superclasses / interfaces of the objects retrieved under the 1st > classloader. > See http://markmail.org/message/2r5coddmuuprucyk for discussion of this issue > in the context of running the Configuration Descriptor Editor (CDE). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.