Dain Sundstrom wrote:
If you try calling any methods on it, including toString, it gives you a
java.lang.IllegalStateException: Proxy is stopped
I'm not sure what state this is meant to be in???
Proxies are not valid until doStart. This is due to the fact that the
pattern you have assigned for the endpoint may not match any other
running GBeans (or their may be more then one matching GBean). When
you enter the running state we lock down the single reference.
OK - so I should leave that config alone in the context constructor (I was
only wondering what it was :-)
But as you say, the NPE that results if I don't catch the IllegalStateException
does appear wacky.
To get this NPE, simply throw an IllegalStateException from the
constructor of JettyWebApplicationContext and this will cause the NPE.
There are obviously other ways it can be triggerred, as I'm currently
trying to add an attribute to the context GBean - I must have done something
wrong somewhere, that is resulting in an exception somewhere - as I'm getting
this
NPE. But for the life of me I can't find out what the original exception is yet.
Still learning eclipse - so debugging multiple threads over multiple projects
with generated code is a tad beyond me at the moment. So far my exhaustive
hunt-and-kill-bug-with-printlns approach has also failed to work out where
the problem is.
So any help working out the causes of the NPE and how to better catch and
report them would be good. Perhaps just an empty catch block somewhere?
cheers
More annoyingly, if you do not catch this exception then the kernel
start
mechanism does not handle it well - it continues on an NPEs later:
java.lang.NullPointerException
at
org.apache.geronimo.gbean.jmx.GBeanMBeanReference.handleNotification(GB
eanMBeanReference.java:321)
at
mx4j.server.interceptor.NotificationListenerMBeanServerInterceptor$List
enerWrapper.handleNotification(NotificationListenerMBeanServerIntercept
or.java:57)
at
javax.management.NotificationBroadcasterSupport.handleNotification(Noti
ficationBroadcasterSupport.java:343)
at
javax.management.NotificationBroadcasterSupport.sendNotification(Notifi
cationBroadcasterSupport.java:317)
at
org.apache.geronimo.gbean.jmx.AbstractManagedObject.sendNotification(Ab
stractManagedObject.java:282)
at
org.apache.geronimo.gbean.jmx.AbstractManagedObject.attemptFullStart(Ab
stractManagedObject.java:535)
at
org.apache.geronimo.gbean.jmx.AbstractManagedObject.start(AbstractManag
edObject.java:317)
at
org.apache.geronimo.gbean.jmx.AbstractManagedObject.startRecursive(Abst
ractManagedObject.java:341)
at
org.apache.geronimo.gbean.jmx.GBeanMBean$8.invoke(GBeanMBean.java:617)
at
org.apache.geronimo.gbean.jmx.GBeanMBeanOperation.invoke(GBeanMBeanOper
ation.java:193)
at
org.apache.geronimo.gbean.jmx.GBeanMBean.invoke(GBeanMBean.java:488)
at
mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBe
anServerInterceptor.java:224)
at
mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBe
anServerInterceptor.java:121)
at
mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityM
BeanServerInterceptor.java:86)
at
mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBe
anServerInterceptor.java:121)
at
mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBe
anServerInterceptor.java:121)
at
mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke
(ContextClassLoaderMBeanServerInterceptor.java:205)
at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1077)
at
org.apache.geronimo.deployment.plugin.local.StartCommand.run(StartComma
nd.java:88)
at java.lang.Thread.run(Thread.java:536)
I don't see how this is possible. Do you still have the code that
makes this happen? If so, please send it to me.
So I think something in AbstractManagedObject.java needs a better
catch block.
I'm not familiar enough with this code yet to guess where this should
be...
Their is definitely something wacky going on.
-dain