[
https://issues.apache.org/jira/browse/FELIX-3784?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Meschberger resolved FELIX-3784.
--------------------------------------
Resolution: Fixed
Refactored support for Configuration Admin Service in Rev. 1425765
For Web Console configuration the ConfigurationSupport class is split into the
pure ManagedService implementation and an extension also implementing the
MetatypeProvider interface for Metatype Service support. Depending on API
available one or the other class is instantiated.
The ConfigManager and ConfigurationAdminConfigurationPrinter classes are moved
to a new "configuration" package and split. The goal is to reduce and separate
dependencies on Configuration Admin and Metatype Service API and to prevent
exceptions and and "uncontrolled" behavior in the absence of the API.
> Configuration Admin tab not working when Metatype Service API is missing
> ------------------------------------------------------------------------
>
> Key: FELIX-3784
> URL: https://issues.apache.org/jira/browse/FELIX-3784
> Project: Felix
> Issue Type: Bug
> Components: Web Console
> Affects Versions: webconsole-4.0.0
> Reporter: Felix Meschberger
> Assignee: Felix Meschberger
> Fix For: webconsole-4.0.2
>
>
> When the MetaType Service API is missing the Web Console Configuration Admin
> tab is non-operational:
> * displaying the "configMgr" label instead of a title
> * sending 404/NOT FOUND when accessed
> * logging an error message (see at the bottom)
> The ConfigurationAdmin plugin should be refactored such, that:
> * It operates without the MetaType Service API available
> (already copes with missing MetaType Service instance)
> * It properly handles missing Configuration Admin API
> (same as for missing Configuration Admin Service instance)
> [ERROR] Failed to instantiate plugin
> org.apache.felix.webconsole.internal.compendium.ConfigManager
> java.lang.NoClassDefFoundError:
> org/osgi/service/metatype/ObjectClassDefinition
> at java.lang.Class.getDeclaredConstructors0(Native Method)
> at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404)
> at java.lang.Class.getConstructor0(Class.java:2714)
> at java.lang.Class.newInstance0(Class.java:343)
> at java.lang.Class.newInstance(Class.java:325)
> at
> org.apache.felix.webconsole.internal.servlet.PluginHolder$InternalPlugin.doGetConsolePlugin(PluginHolder.java:748)
> at
> org.apache.felix.webconsole.internal.servlet.PluginHolder$Plugin.getConsolePlugin(PluginHolder.java:535)
> at
> org.apache.felix.webconsole.internal.servlet.PluginHolder$Plugin.doGetTitle(PluginHolder.java:522)
> at
> org.apache.felix.webconsole.internal.servlet.PluginHolder$Plugin.getTitle(PluginHolder.java:512)
> at
> org.apache.felix.webconsole.internal.servlet.PluginHolder.getLocalizedLabelMap(PluginHolder.java:248)
> at
> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:470)
> at
> org.apache.felix.webconsole.internal.servlet.OsgiManager.service(OsgiManager.java:418)
> at
> org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:96)
> at
> org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:79)
> at
> org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:42)
> at
> org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:49)
> at
> org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:33)
> at
> org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:48)
> at
> org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:39)
> at
> org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
> at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
> at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
> at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
> at org.mortbay.jetty.Server.handle(Server.java:326)
> at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
> at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
> at
> org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
> Caused by: java.lang.ClassNotFoundException:
> org.osgi.service.metatype.ObjectClassDefinition not found by
> org.apache.felix.webconsole.all [10]
> at
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)
> at
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72)
> at
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> ... 34 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira