Unable to set profile property using JMX interface

Solution Unverified - Updated -

Issue

  • I'm trying to change the Maven repository list for the "default" profile. In order to do this I do the following:

    • I unzip jboss-fuse-pre-patched-6.2.0.redhat-143-p1.zip
    • I change etc/users.properties by uncommenting the admin line and start fuse
    • I access to Hawtio with admin/admin http://XXX.XXX.XXX.XX:8181/hawtio/login
    • I access to the "JMX" tab and explore to io.fabric8 folder and click on bean "ClusterBootstrapManager"
    • I click on "Operations" tab
    • I click on createCluster(java.util.Map) operation
    • I enter the following string in the P1 argument to method: {"username":"admin", "password":"admin", "role":"admin", "zookeeperPassword":"admin","globalResolver":"" ,"resolver":"","manualIp":"","waitForProvisioning":"true"}
    • I click on the "Execute" button.
    • I click on the bean named "Fabric" in the io.fabric8 folder
    • I click on "Operations" tab
    • I click on the operation named "setProfileProperty"
    • I enter the following values in the text-boxes
    1. P1: 1.0
    2. P2: default
    3. P3: io.fabric8.agent
    4. P4: org.ops4j.pax.url.mvn.repositories
    5. P5: https://myuser:mypwd@myhost.mydomain.com/artifactory/my-repository@id=my-repository
    • I click on "Execute" button
  • After above steps, I get a stack trace on the Hawtio console and profile named default has the org.ops4j.pax.url.mvn.repsitories property of pid io.fabric8.agent unchanged.

java.lang.UnsupportedOperationException
    at java.util.Collections$UnmodifiableMap.put(Collections.java:1457)
    at io.fabric8.core.jmx.FabricManager.setProfileProperty(FabricManager.java:560)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
    at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
    at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:112)
    at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(StandardMBeanIntrospector.java:46)
    at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
    at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
    at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
    at javax.management.StandardMBean.invoke(StandardMBean.java:405)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at sun.reflect.GeneratedMethodAccessor44.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.karaf.management.boot.KarafMBeanServerBuilder$MBeanInvocationHandler.invoke(KarafMBeanServerBuilder.java:80)
    at com.sun.proxy.$Proxy0.invoke(Unknown Source)
    at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:98)
    at org.jolokia.handler.ExecHandler.doHandleRequest(ExecHandler.java:40)
    at org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:89)
    at org.jolokia.backend.MBeanServerExecutorLocal.handleRequest(MBeanServerExecutorLocal.java:109)
    at org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:102)
    at org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:98)
    at org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:411)
    at org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)
    at org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)
    at org.jolokia.http.HttpRequestHandler.handlePostRequest(HttpRequestHandler.java:137)
    at org.jolokia.http.AgentServlet$3.handleRequest(AgentServlet.java:425)
    at org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:320)
    at org.jolokia.http.AgentServlet.handle(AgentServlet.java:291)
    at org.jolokia.http.AgentServlet.doPost(AgentServlet.java:259)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1496)
    at io.hawt.web.AuthenticationFilter$2.run(AuthenticationFilter.java:166)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at io.hawt.web.AuthenticationFilter.executeAs(AuthenticationFilter.java:163)
    at io.hawt.web.AuthenticationFilter.doFilter(AuthenticationFilter.java:130)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at io.hawt.web.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:28)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at io.hawt.web.CORSFilter.doFilter(CORSFilter.java:42)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at io.hawt.web.CacheHeadersFilter.doFilter(CacheHeadersFilter.java:37)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at io.hawt.web.SessionExpiryFilter.process(SessionExpiryFilter.java:147)
    at io.hawt.web.SessionExpiryFilter.doFilter(SessionExpiryFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at io.hawt.web.RedirectFilter.process(RedirectFilter.java:73)
    at io.hawt.web.RedirectFilter.doFilter(RedirectFilter.java:38)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at org.ops4j.pax.web.service.internal.WelcomeFilesFilter.doFilter(WelcomeFilesFilter.java:185)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1467)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:69)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:240)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:429)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:75)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:366)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Thread.java:745)
  • NOTE: I cannot reproduce this issue using jboss-fuse-6.1.0.redhat-379

  • I need to update a properties file at runtime. My idea is to use jolokia, to invoke method setProfileProperty from mbean io.fabric8:type=Fabric.
    Using the ui it seems to not work

Environment

  • Red Hat JBoss Fuse
    • 6.2.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.