I don't think so, there can also be times when JMX is up but that bean is
still not registered. You should be catching this in your app.

Regards
-- 
Dejan Bosanac - http://twitter.com/dejanb
-----------------
The experts in open source integration and messaging - http://fusesource.com
ActiveMQ in Action - http://www.manning.com/snyder/
Blog - http://www.nighttale.net


On Fri, Jan 6, 2012 at 1:33 AM, Stevo Slavić <ssla...@gmail.com> wrote:

> When broker is starting up with existing JVM (non-ActiveMQ created)
> MBeanServer, and isSlave gets called by a scheduled job, I get
> InstanceNotFoundException on the client side. Nothing declares this checked
> exception will get thrown so compiler won't let me catch it. Once ActiveMQ
> is fully up, same call returns nicely.
>
> Here is the relevant client code (from
> ConnectionsMonitorImpl.testAmqConnections):
>
>
> 116:  JMXServiceURL jmxUrl = new JMXServiceURL(jmxUrlString);
> 117:  jmxc = connectWithTimeout(jmxUrl, 5, TimeUnit.SECONDS);
> 118:  MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
> 119:  ObjectName mbeanName = new
> ObjectName("org.apache.activemq:BrokerName=localhost,Type=Broker");
> 120:  BrokerViewMBean mbeanProxy = JMX.newMBeanProxy(mbsc, mbeanName,
> BrokerViewMBean.class, true);
> 121:  boolean isSlave = mbeanProxy.isSlave();
>
>
> Here are Java client and ActiveMQ log fragments from interval around moment
> when InstanceNotFoundException gets thrown:
>
>
> Java client log:
> [2012-01-05 23:04:42.957] 80220 [scheduler_Worker-7] ERROR
> org.quartz.core.ErrorLogger - Job (DEFAULT.monitorAmqConnections threw an
> exception.
> org.quartz.SchedulerException: Job threw an unhandled exception.
>        at org.quartz.core.JobRunShell.run(JobRunShell.java:227)
> ~[quartz-1.8.5.jar:na]
>        at
>
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
> [quartz-1.8.5.jar:na]
> Caused by:
> org.springframework.scheduling.quartz.JobMethodInvocationFailedException:
> Invocation of method 'testAmqConnections' on target class [class
> foo.bar.ConnectionsMonitorImpl]
>  failed; nested exception is java.lang.reflect.UndeclaredThrowableException
>        at
>
> org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:273)
> ~[spring-context-support-3.0.6.RELEASE.jar:3
> .0.6.RELEASE]
>        at
>
> org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
> ~[spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
>        at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
> ~[quartz-1.8.5.jar:na]
>        ... 1 common frames omitted
> Caused by: java.lang.reflect.UndeclaredThrowableException: null
>        at $Proxy144.isSlave(Unknown Source) ~[na:na]
>        at
>
> foo.bar.ConnectionsMonitorImpl.testAmqConnections(ConnectionsMonitorImpl.java:121)
> ~[ConnectionsMonitorImpl.class:na]
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.6.0_29]
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> ~[na:1.6.0_29]
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> ~[na:1.6.0_29]
>        at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
>        at
> org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
> ~[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
>        at
>
> org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)
> ~[spring-context-support-3.0.6.RELEASE.jar:3
> .0.6.RELEASE]
>        at
>
> org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:87)
> ~[spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
>        at org.quartz.core.JobRunShell.run(JobRunShell.java:217)
> ~[quartz-1.8.5.jar:na]
>        ... 1 common frames omitted
> Caused by: javax.management.InstanceNotFoundException:
> org.apache.activemq:BrokerName=localhost,Type=Broker
>        at
>
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
> ~[na:1.6.0_29]
>        at
>
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:662)
> ~[na:1.6.0_29]
>        at
>
> com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
> ~[na:1.6.0_29]
>        at
>
> javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1404)
> ~[na:1.6.0_29]
>        at
>
> javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
> ~[na:1.6.0_29]
>        at
>
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
> ~[na:1.6.0_29]
>        at
>
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
> ~[na:1.6.0_29]
>        at
>
> javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:600)
> ~[na:1.6.0_29]
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.6.0_29]
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> ~[na:1.6.0_29]
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> ~[na:1.6.0_29]
>        at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
>        at
> sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:303)
> ~[na:1.6.0_29]
>        at sun.rmi.transport.Transport$1.run(Transport.java:160)
> ~[na:1.6.0_29]
>        at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
> ~[na:1.6.0_29]
>        at
> sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
> ~[na:1.6.0_29]
>        at
>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
> ~[na:1.6.0_29]
>        at
>
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
> ~[na:1.6.0_29]
>        at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> ~[na:1.6.0_29]
>        at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909)
> ~[na:1.6.0_29]
>        at java.lang.Thread.run(Thread.java:662) ~[na:1.6.0_29]
>        at
>
> sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
> ~[na:1.6.0_29]
>        at
> sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
> ~[na:1.6.0_29]
>        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
> ~[na:1.6.0_29]
>        at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source) ~[na:na]
>        at
> javax.management.remote.rmi.RMIConnectionImpl_Stub.getAttribute(Unknown
> Source) ~[na:1.6.0_29]
>        at
>
> javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.getAttribute(RMIConnector.java:878)
> ~[na:1.6.0_29]
>        at
>
> javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:272)
> ~[na:1.6.0_29]
>        at $Proxy144.isSlave(Unknown Source) ~[na:na]
>        at
>
> foo.bar.ConnectionsMonitorImpl.testAmqConnections(ConnectionsMonitorImpl.java:121)
> ~[ConnectionsMonitorImpl.class:na]
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.6.0_29]
>        at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> ~[na:1.6.0_29]
>        at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> ~[na:1.6.0_29]
>        at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_29]
>        at
> org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
> ~[spring-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
>        at
>
> org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)
> ~[spring-context-support-3.0.6.RELEASE.jar:3
> .0.6.RELEASE]
>        at
>
> org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
> ~[spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
>        at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
> ~[quartz-1.8.5.jar:na]
>        ... 1 common frames omitted
>
>
> ActiveMQ log:
> 2012-01-05 23:04:42,433 | INFO  | Refreshing
> org.apache.activemq.xbean.XBeanBrokerFactory$1@1c0c5e3d: startup date [Thu
> Jan 05 23:04:42 CET 2012]; root of context hierarchy |
> org.apache.activemq.xbean.XBeanB
> rokerFactory$1 | WrapperSimpleAppMain
> 2012-01-05 23:04:43,328 | WARN  | destroyApplicationContextOnStop
> parameter
> is deprecated, please use shutdown hooks instead |
> org.apache.activemq.xbean.XBeanBrokerService | WrapperSimpleAppMain
> 2012-01-05 23:04:43,336 | INFO  |
> PListStore:/data/activemq_data/localhost/tmp_storage started |
> org.apache.activemq.store.kahadb.plist.PListStore | WrapperSimpleAppMain
> 2012-01-05 23:04:43,386 | INFO  | Using Persistence Adapter:
> KahaDBPersistenceAdapter[/data/activemq_data/kahadb] |
> org.apache.activemq.broker.BrokerService | WrapperSimpleAppMain
> 2012-01-05 23:04:44,221 | INFO  | KahaDB is version 3 |
> org.apache.activemq.store.kahadb.MessageDatabase | WrapperSimpleAppMain
> 2012-01-05 23:04:44,291 | INFO  | Recovering from the journal ... |
> org.apache.activemq.store.kahadb.MessageDatabase | WrapperSimpleAppMain
> 2012-01-05 23:04:44,293 | INFO  | Recovery replayed 1 operations from the
> journal in 0.041 seconds. |
> org.apache.activemq.store.kahadb.MessageDatabase | WrapperSimpleAppMain
> 2012-01-05 23:04:44,318 | INFO  | ActiveMQ 5.5.0 JMS Message Broker
> (localhost) is starting | org.apache.activemq.broker.BrokerService |
> WrapperSimpleAppMain
> 2012-01-05 23:04:44,318 | INFO  | For help or more information please see:
> http://activemq.apache.org/ | org.apache.activemq.broker.BrokerService |
> WrapperSimpleAppMain
> 2012-01-05 23:04:44,707 | INFO  | Listening for connections at:
> tcp://foo02:61616 |
> org.apache.activemq.transport.TransportServerThreadSupport |
> WrapperSimpleAppMain
> 2012-01-05 23:04:44,708 | INFO  | Connector openwire Started |
> org.apache.activemq.broker.TransportConnector | WrapperSimpleAppMain
> 2012-01-05 23:04:44,717 | INFO  | ActiveMQ JMS Message Broker (localhost,
> ID:foo02-32296-1325801084346-0:1) started |
> org.apache.activemq.broker.BrokerService | WrapperSimpleAppMain
> 2012-01-05 23:04:44,825 | INFO  | jetty-7.1.6.v20100715 |
> org.eclipse.jetty.util.log | WrapperSimpleAppMain
> 2012-01-05 23:04:44,905 | WARN  | Can't reuse
> /tmp/Jetty_0_0_0_0_8161_admin__admin__9l5s6p, using
> /tmp/Jetty_0_0_0_0_8161_admin__admin__9l5s6p_2948067291497697879 |
> org.eclipse.jetty.util.log | WrapperSimple
> AppMain
> 2012-01-05 23:04:45,219 | INFO  | ActiveMQ WebConsole initialized. |
> org.apache.activemq.web.WebConsoleStarter | WrapperSimpleAppMain
> 2012-01-05 23:04:45,366 | INFO  | Initializing Spring FrameworkServlet
> 'dispatcher' | /admin | WrapperSimpleAppMain
> 2012-01-05 23:04:45,652 | INFO  | ActiveMQ Console at
> http://0.0.0.0:8161/admin | org.eclipse.jetty.util.log |
> WrapperSimpleAppMain
> 2012-01-05 23:04:45,652 | WARN  | Can't reuse
> /tmp/Jetty_0_0_0_0_8161_camel__camel__.3v7y27, using
> /tmp/Jetty_0_0_0_0_8161_camel__camel__.3v7y27_8560113755856480905 |
> org.eclipse.jetty.util.log | WrapperSimp
> leAppMain
> 2012-01-05 23:04:45,762 | INFO  | Initializing Spring root
> WebApplicationContext | /camel | WrapperSimpleAppMain
> 2012-01-05 23:04:45,803 | INFO  | OSGi environment not detected. |
> org.apache.camel.spring.handler.CamelNamespaceHandler |
> WrapperSimpleAppMain
> 2012-01-05 23:04:46,550 | INFO  | Apache Camel 2.7.0 (CamelContext: camel)
> is starting | org.apache.camel.spring.SpringCamelContext |
> WrapperSimpleAppMain
> 2012-01-05 23:04:46,557 | INFO  | JMX enabled. Using
> ManagedManagementStrategy. | org.apache.camel.spring.SpringCamelContext |
> WrapperSimpleAppMain
> 2012-01-05 23:04:47,023 | INFO  | Found 5 packages with 16 @Converter
> classes to load |
> org.apache.camel.impl.converter.AnnotationTypeConverterLoader |
> WrapperSimpleAppMain
> 2012-01-05 23:04:47,041 | INFO  | Loaded 152 type converters in 0.344
> seconds | org.apache.camel.impl.converter.DefaultTypeConverter |
> WrapperSimpleAppMain
> 2012-01-05 23:04:47,357 | INFO  | Connector vm://localhost Started |
> org.apache.activemq.broker.TransportConnector | WrapperSimpleAppMain
> 2012-01-05 23:04:47,430 | INFO  | Route: route1 started and consuming
> from:
> Endpoint[activemq://example.A] | org.apache.camel.spring.SpringCamelContext
> | WrapperSimpleAppMain
> 2012-01-05 23:04:47,441 | INFO  | Total 1 routes, of which 1 is started. |
> org.apache.camel.spring.SpringCamelContext | WrapperSimpleAppMain
> 2012-01-05 23:04:47,441 | INFO  | Apache Camel 2.7.0 (CamelContext: camel)
> started in 0.891 seconds | org.apache.camel.spring.SpringCamelContext |
> WrapperSimpleAppMain
> 2012-01-05 23:04:48,359 | INFO  | Camel Console at
> http://0.0.0.0:8161/camel| org.eclipse.jetty.util.log |
> WrapperSimpleAppMain
> 2012-01-05 23:04:48,360 | WARN  | Can't reuse
> /tmp/Jetty_0_0_0_0_8161_demo__demo__uj3swb, using
> /tmp/Jetty_0_0_0_0_8161_demo__demo__uj3swb_94329410284537106 |
> org.eclipse.jetty.util.log | WrapperSimpleAppMai
> n
> 2012-01-05 23:04:48,368 | INFO  | ActiveMQ Web Demos at
> http://0.0.0.0:8161/demo | org.eclipse.jetty.util.log |
> WrapperSimpleAppMain
> 2012-01-05 23:04:48,368 | WARN  | Can't reuse
> /tmp/Jetty_0_0_0_0_8161_fileserver__fileserver__rlvn9v, using
> /tmp/Jetty_0_0_0_0_8161_fileserver__fileserver__rlvn9v_6652368536172500759
> | org.eclipse.jetty.util
> .log | WrapperSimpleAppMain
> 2012-01-05 23:04:48,376 | INFO  | RESTful file access application at
> http://0.0.0.0:8161/fileserver | org.eclipse.jetty.util.log |
> WrapperSimpleAppMain
> 2012-01-05 23:04:48,407 | INFO  | Started
> SelectChannelConnector@0.0.0.0:8161 | org.eclipse.jetty.util.log |
> WrapperSimpleAppMain
>
>
> Would having ActiveMQ start MBeanServer make any difference?
>
> I'm using following solution to apply JMX connection timeouts:
> http://weblogs.java.net/blog/emcmanus/archive/2007/05/making_a_jmx_co.html
>
> Regards,
> Stevo.
>
>
> On Thu, Jan 5, 2012 at 1:23 PM, Stevo Slavić <ssla...@gmail.com> wrote:
>
> > Great, thank you very much Dejan!
> >
> > This property is not listed on the ActiveMQ JMX Reference page:
> > http://activemq.apache.org/jmx.html#JMX-ActiveMQMBeansReference
> >
> > Found more info in the source and contributed fix for javadoc typo ( see
> > https://issues.apache.org/jira/browse/AMQ-3652 ). FOSS rulz!
> >
> > Regards,
> > Stevo.
> >
> >
> > On Thu, Jan 5, 2012 at 12:01 PM, Dejan Bosanac <de...@nighttale.net
> >wrote:
> >
> >> It does, and you have "Slave" JMX attribute on broker object.
> >>
> >> Regards
> >> --
> >> Dejan Bosanac - http://twitter.com/dejanb
> >> -----------------
> >> The experts in open source integration and messaging -
> >> http://fusesource.com
> >> ActiveMQ in Action - http://www.manning.com/snyder/
> >> Blog - http://www.nighttale.net
> >>
> >>
> >> On Wed, Jan 4, 2012 at 8:20 PM, Stevo Slavić <ssla...@gmail.com> wrote:
> >>
> >> > Hello ActiveMQ community,
> >> >
> >> > Is there a way to check that a slave, in shared filesystem storage
> >> > master/slave setup which is awaiting lock to become available, is up?
> >> Does
> >> > JMX interface start early enough, before lock is acquired?
> >> >
> >> > Regards,
> >> > Stevo.
> >> >
> >>
> >
> >
>

Reply via email to