Pablo,

Does your code, looks like it's a test, start and register the MBean? Are
you accessing the MBeam from a running JBoss AS7 instance or something? I
feel like I'm missing some information.

The cause is that the Request scope isn't active when you're accessing the
MBean.

On Fri, Sep 26, 2014 at 3:46 AM, Pablo Pita <[email protected]> wrote:

> Hello all,
>
> I am having a problem trying to use DeltaSpike JMX annotations in a
> standalone main application.
>
> For my tests, I have taken MyMBean from DS sources. When looking into the
> JMX console JConsole, I see that MyMBean is registered but when trying to
> access the counter attribute, this exception comes:
>
> 26.09.2014 11:18:20
> org.apache.deltaspike.core.impl.jmx.DynamicMBeanWrapper
> getAttribute
> SCHWERWIEGEND: can't get counter value
> java.lang.reflect.InvocationTargetException
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
>
> org.apache.deltaspike.core.impl.jmx.AttributeAccessor.get(AttributeAccessor.java:46)
>     at
>
> org.apache.deltaspike.core.impl.jmx.DynamicMBeanWrapper.getAttribute(DynamicMBeanWrapper.java:249)
>     at
>
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666)
>     at
>
> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
>     at
>
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1431)
>     at
>
> javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:74)
>     at
>
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1295)
>     at
>
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1387)
>     at
>
> javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:630)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
>     at sun.rmi.transport.Transport$1.run(Transport.java:159)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
>     at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
>     at
>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
>     at
>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
>     at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
>     at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
>     at java.lang.Thread.run(Thread.java:662)
> Caused by: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No
> active contexts for scope type javax.enterprise.context.RequestScoped
>     at
> org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:608)
>     at
>
> org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:71)
>     at
>
> org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:104)
>     at
>
> org.jboss.weld.proxies.DynamicMockManager$-427240798$Proxy$_$$_WeldClientProxy.getMock(DynamicMockManager$-427240798$Proxy$_$$_WeldClientProxy.java)
>     at
>
> org.apache.deltaspike.testcontrol.impl.mock.MockAwareInjectionTargetWrapper.produce(MockAwareInjectionTargetWrapper.java:59)
>     at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:296)
>     at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:103)
>     at
>
> org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:90)
>     at
>
> org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
>     at
>
> com.jmx.ds.MyMBean$Proxy$_$$_WeldClientProxy.getCounter(MyMBean$Proxy$_$$_WeldClientProxy.java)
>     ... 27 more
>
> I wonder if there is something I am missing to properly setup this case. I
> am on Windows running JDK 6 and Weld 1.1.18.
>
>
> The main program I am using is as follows:
>
>     public static void main(String[] args) throws Exception {
>
>         CdiContainer cdiContainer = CdiContainerLoader.getCdiContainer();
>         cdiContainer.boot();
>
>         // Starting the application-context and request-context allows to
> use
>         // @ApplicationScoped and @RequestScoped beans
>         ContextControl contextControl = cdiContainer.getContextControl();
>         contextControl.startContext(ApplicationScoped.class);
>         contextControl.startContext(RequestScoped.class);
>
>         // we can use CDI here
>          while (running) {
>             int i = 0;
>             i = i + 1;
>             Thread.sleep(50);
>         }
>         cdiContainer.shutdown();
>     }
>
> Thanks for any feedback,
> --
> Pablo Pita Leira
>



-- 
Jason Porter
http://en.gravatar.com/lightguardjp

Reply via email to