You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@uima.apache.org by "Jerry Cwiklik (JIRA)" <de...@uima.apache.org> on 2018/02/01 18:23:01 UTC
[jira] [Created] (UIMA-5714) UIMA-AS: JMX registration of MBean
fails when name is invalid
Jerry Cwiklik created UIMA-5714:
-----------------------------------
Summary: UIMA-AS: JMX registration of MBean fails when name is invalid
Key: UIMA-5714
URL: https://issues.apache.org/jira/browse/UIMA-5714
Project: UIMA
Issue Type: Bug
Components: Async Scaleout
Reporter: Jerry Cwiklik
Assignee: Jerry Cwiklik
Fix For: future-Uima-AS
When registering UIMA-AS MBean with JMX a unique name (ObjectName) is constructed at runtime. Part of this name comes from AE resource specifier and fetched via
((ResourceCreationSpecifier) resourceSpecifier).getMetaData().getName();
Since users can type whatever they want for the name, this string has to be sanitized to remove chars that are not compatible with jmx ObjectName.
In one concrete scenario, a user included comma in the name which is not a legal char for ObjectName. This caused an exception during initialization of a service:
|Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl]: Constructor threw exception; nested exception is javax.management.MalformedObjectNameException: Invalid character ',' in key part of property
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:271)
... 17 more
Caused by: javax.management.MalformedObjectNameException: Invalid character ',' in key part of property
at javax.management.ObjectName.construct(ObjectName.java:562)
at javax.management.ObjectName.<init>(ObjectName.java:1393)
at org.apache.uima.aae.controller.BaseAnalysisEngineController.<init>(BaseAnalysisEngineController.java:462)
at org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.<init>(PrimitiveAnalysisEngineController_impl.java:173)
at org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.<init>(PrimitiveAnalysisEngineController_impl.java:161)
at org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.<init>(PrimitiveAnalysisEngineController_impl.java:134)
at org.apache.uima.aae.controller.PrimitiveAnalysisEngineController_impl.<init>(PrimitiveAnalysisEngineController_impl.java:125)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:83)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57)
at java.lang.reflect.Constructor.newInstance(Constructor.java:437)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
... 19 more|
In BaseAnalysisEngineController.setupName() make sure the name contains only valid chars for ObjectName. Code in question is this:
String serviceName = ((ResourceCreationSpecifier) resourceSpecifier).getMetaData().getName();
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)