deltaspike-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gerhard Petracek <gerhard.petra...@gmail.com>
Subject Re: problem trying to use DeltaSpike JMX annotations in a standalone main application
Date Fri, 26 Sep 2014 17:20:27 GMT
the test-control module should be only on the classpath once you run tests
and not in production mode (see e.g. [1]).

regards,
gerhard

[1] https://github.com/os890/javase-cdi-ds-project-template

http://www.irian.at

Your JSF/JavaEE powerhouse -
JavaEE Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces

2014-09-26 19:10 GMT+02:00 Pablo Pita <pablo.pita@gmail.com>:

> My original idea was to emulate a normal Java application with a main
> method using Weld version for Java SE as CDI container. There, I would
> bootstrap the CDI container, and voila, the CDI JMX beans should be
> registered by DeltaSpike infrastructure.
>
> Running unit tests with the @RunWith(CdiTestRunner.class) works (no
> deployment to JBoss, or Arquillian, just Weld SE in the test class path).
> As well, the JMX registration works OK when deploying the application to
> JBoss. I can work with the JMX Console with the JMX beans.
>
> So the code for a normal main method bootstraping the CDI Container is not
> that simple, is it?
>
> Pablo
>
>
>
> On Fri, Sep 26, 2014 at 6:43 PM, Jason Porter <lightguard.jp@gmail.com>
> wrote:
>
> > 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 <pablo.pita@gmail.com>
> 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
> >
>
>
>
> --
> Pablo Pita Leira
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message