You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Glyn Normington <gn...@vmware.com> on 2012/04/05 17:39:24 UTC
Problem stopping CXF - NPE in ConfigurationManager.stop
I thought I'd try running CXF distributed OSGi on Eclipse Virgo and got it working painlessly, so thanks for some nice documentation!
However, I did notice an issue with the greeter demo. If I stop (or even uninstall) the greeter impl, the remote service is still remotely invokable. I guess the service object is cached inside CXF, but can someone confirm this is working as designed?
But when I stopped the CXF bundle, the remote service was again still invokable, so it seems that the CXF stop doesn't cleanly terminate the underlying Jetty instance. Perhaps this is due to a NPE I observed:
Daemon Thread [Thread-34] (Suspended (exception NullPointerException))
ConfigurationManager.stop(BundleContext) line: 267
AggregatedActivator.stopEmbeddedActivators(BundleContext) line: 137
AggregatedActivator.stop(BundleContext) line: 51
BundleContextImpl$2.run() line: 771
AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]
BundleContextImpl.stop() line: 764
BundleHost.stopWorker(int) line: 510
BundleHost(AbstractBundle).stop(int) line: 464
Basic.stop(boolean, Bundle[]) line: 817
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
Reflective.method(CommandSession, Object, String, List<Object>) line: 136
CommandProxy.execute(CommandSession, List<Object>) line: 82
Closure.executeCmd(String, List<Object>) line: 469
Closure.executeStatement(List<Token>) line: 395
Pipe.run() line: 108
Closure.execute(List<Object>) line: 183
Closure.execute(CommandSession, List<Object>) line: 120
CommandSessionImpl.execute(CharSequence) line: 89
Console.run() line: 62
Shell.console(CommandSession) line: 203
Shell.gosh(CommandSession, String[]) line: 128
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
Reflective.method(CommandSession, Object, String, List<Object>) line: 136
CommandProxy.execute(CommandSession, List<Object>) line: 82
Closure.executeCmd(String, List<Object>) line: 469
Closure.executeStatement(List<Token>) line: 395
Pipe.run() line: 108
Closure.execute(List<Object>) line: 183
Closure.execute(CommandSession, List<Object>) line: 120
CommandSessionImpl.execute(CharSequence) line: 89
TelnetConnection.run() line: 94
Should I raise a bug on this NPE? Any ideas whether this really is the cause of the remote service continuing to run after CXF is stopped?
Environment:
CXF single bundle distribution 1.3.0
ZooKeeper 3.4.3
java version "1.6.0_29"
Mac OS X 10.7.3
Regards,
Glyn
PS. I am about to go off for Easter, so I apologise in advance for not being able to handle any response before Tuesday.
Re: Problem stopping CXF - NPE in ConfigurationManager.stop
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Glynn
On 10/04/12 11:55, Glyn Normington wrote:
> Hi Sergey
>
> On 5 Apr 2012, at 16:51, Sergey Beryozkin wrote:
>
>> Hi Glyn
>>
>> On 05/04/12 18:39, Glyn Normington wrote:
>>> I thought I'd try running CXF distributed OSGi on Eclipse Virgo and got it working painlessly, so thanks for some nice documentation!
>>>
>>> However, I did notice an issue with the greeter demo. If I stop (or even uninstall) the greeter impl, the remote service is still remotely invokable. I guess the service object is cached inside CXF, but can someone confirm this is working as designed?
>>
>> Indirectly yes, when the endpoint is created,
>>>
>>> But when I stopped the CXF bundle, the remote service was again still invokable, so it seems that the CXF stop doesn't cleanly terminate the underlying Jetty instance. Perhaps this is due to a NPE I observed:
>>>
>>
>> This should've caused a CXF server stopping AFAIK
>>> Daemon Thread [Thread-34] (Suspended (exception NullPointerException))
>>> ConfigurationManager.stop(BundleContext) line: 267
>>> AggregatedActivator.stopEmbeddedActivators(BundleContext) line: 137
>>> AggregatedActivator.stop(BundleContext) line: 51
>>> BundleContextImpl$2.run() line: 771
>>> AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]
>>> BundleContextImpl.stop() line: 764
>>> BundleHost.stopWorker(int) line: 510
>>> BundleHost(AbstractBundle).stop(int) line: 464
>>> Basic.stop(boolean, Bundle[]) line: 817
>>> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
>>> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>>> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>>> Method.invoke(Object, Object...) line: 597
>>> Reflective.method(CommandSession, Object, String, List<Object>) line: 136
>>> CommandProxy.execute(CommandSession, List<Object>) line: 82
>>> Closure.executeCmd(String, List<Object>) line: 469
>>> Closure.executeStatement(List<Token>) line: 395
>>> Pipe.run() line: 108
>>> Closure.execute(List<Object>) line: 183
>>> Closure.execute(CommandSession, List<Object>) line: 120
>>> CommandSessionImpl.execute(CharSequence) line: 89
>>> Console.run() line: 62
>>> Shell.console(CommandSession) line: 203
>>> Shell.gosh(CommandSession, String[]) line: 128
>>> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
>>> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>>> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>>> Method.invoke(Object, Object...) line: 597
>>> Reflective.method(CommandSession, Object, String, List<Object>) line: 136
>>> CommandProxy.execute(CommandSession, List<Object>) line: 82
>>> Closure.executeCmd(String, List<Object>) line: 469
>>> Closure.executeStatement(List<Token>) line: 395
>>> Pipe.run() line: 108
>>> Closure.execute(List<Object>) line: 183
>>> Closure.execute(CommandSession, List<Object>) line: 120
>>> CommandSessionImpl.execute(CharSequence) line: 89
>>> TelnetConnection.run() line: 94
>>>
>>> Should I raise a bug on this NPE?
>>
>> Please do
>
> After more digging, it looks like the NPE is probably fixed by https://issues.apache.org/jira/browse/FELIX-2813 in Felix config admin 1.4.0. So I raised the this bug to cover the upgrade: https://issues.apache.org/jira/browse/DOSGI-117
>
I can not see 1.4.0 in Central
>>
>>> Any ideas whether this really is the cause of the remote service continuing to run after CXF is stopped?
>>
>> Not really :-)
>
> The AggregatedActivator.stopEmbeddedActivators method (below) doesn't have any exception handling, so the above NPE will abort the loop. Since this is stop processing, would it make sense to catch/log exceptions and continue the loop?
>
> void stopEmbeddedActivators(BundleContext ctx) throws Exception {
> for (BundleActivator ba : activators) {
> ba.stop(ctx);
> }
> }
>
Sure, fixed on the trunk
Thanks, Sergey
>>
>>>
>>> Environment:
>>> CXF single bundle distribution 1.3.0
>>> ZooKeeper 3.4.3
>>> java version "1.6.0_29"
>>> Mac OS X 10.7.3
>>>
>>> Regards,
>>> Glyn
>>> PS. I am about to go off for Easter, so I apologise in advance for not being able to handle any response before Tuesday.
>>>
>>
>> Enjoy :-)
>> FYI, ideally a patch would be provided to get a speedy resolution to this issue, the reported issues will be reviewed and as many as realistically possible will be resolved in time for the next release, but having a patch submitted is definitely the fastest way to get it resolved :-)
>>
>> Cheers, Sergey
>>
>>>
>>
>>
>> --
>> Sergey Beryozkin
>>
>> Talend Community Coders
>> http://coders.talend.com/
>>
>> Blog: http://sberyozkin.blogspot.com
>
> Regards,
> Glyn
>
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com
Re: Problem stopping CXF - NPE in ConfigurationManager.stop
Posted by Glyn Normington <gn...@vmware.com>.
Hi Sergey
On 5 Apr 2012, at 16:51, Sergey Beryozkin wrote:
> Hi Glyn
>
> On 05/04/12 18:39, Glyn Normington wrote:
>> I thought I'd try running CXF distributed OSGi on Eclipse Virgo and got it working painlessly, so thanks for some nice documentation!
>>
>> However, I did notice an issue with the greeter demo. If I stop (or even uninstall) the greeter impl, the remote service is still remotely invokable. I guess the service object is cached inside CXF, but can someone confirm this is working as designed?
>
> Indirectly yes, when the endpoint is created,
>>
>> But when I stopped the CXF bundle, the remote service was again still invokable, so it seems that the CXF stop doesn't cleanly terminate the underlying Jetty instance. Perhaps this is due to a NPE I observed:
>>
>
> This should've caused a CXF server stopping AFAIK
>> Daemon Thread [Thread-34] (Suspended (exception NullPointerException))
>> ConfigurationManager.stop(BundleContext) line: 267
>> AggregatedActivator.stopEmbeddedActivators(BundleContext) line: 137
>> AggregatedActivator.stop(BundleContext) line: 51
>> BundleContextImpl$2.run() line: 771
>> AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]
>> BundleContextImpl.stop() line: 764
>> BundleHost.stopWorker(int) line: 510
>> BundleHost(AbstractBundle).stop(int) line: 464
>> Basic.stop(boolean, Bundle[]) line: 817
>> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
>> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>> Method.invoke(Object, Object...) line: 597
>> Reflective.method(CommandSession, Object, String, List<Object>) line: 136
>> CommandProxy.execute(CommandSession, List<Object>) line: 82
>> Closure.executeCmd(String, List<Object>) line: 469
>> Closure.executeStatement(List<Token>) line: 395
>> Pipe.run() line: 108
>> Closure.execute(List<Object>) line: 183
>> Closure.execute(CommandSession, List<Object>) line: 120
>> CommandSessionImpl.execute(CharSequence) line: 89
>> Console.run() line: 62
>> Shell.console(CommandSession) line: 203
>> Shell.gosh(CommandSession, String[]) line: 128
>> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
>> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
>> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
>> Method.invoke(Object, Object...) line: 597
>> Reflective.method(CommandSession, Object, String, List<Object>) line: 136
>> CommandProxy.execute(CommandSession, List<Object>) line: 82
>> Closure.executeCmd(String, List<Object>) line: 469
>> Closure.executeStatement(List<Token>) line: 395
>> Pipe.run() line: 108
>> Closure.execute(List<Object>) line: 183
>> Closure.execute(CommandSession, List<Object>) line: 120
>> CommandSessionImpl.execute(CharSequence) line: 89
>> TelnetConnection.run() line: 94
>>
>> Should I raise a bug on this NPE?
>
> Please do
After more digging, it looks like the NPE is probably fixed by https://issues.apache.org/jira/browse/FELIX-2813 in Felix config admin 1.4.0. So I raised the this bug to cover the upgrade: https://issues.apache.org/jira/browse/DOSGI-117
>
>> Any ideas whether this really is the cause of the remote service continuing to run after CXF is stopped?
>
> Not really :-)
The AggregatedActivator.stopEmbeddedActivators method (below) doesn't have any exception handling, so the above NPE will abort the loop. Since this is stop processing, would it make sense to catch/log exceptions and continue the loop?
void stopEmbeddedActivators(BundleContext ctx) throws Exception {
for (BundleActivator ba : activators) {
ba.stop(ctx);
}
}
>
>>
>> Environment:
>> CXF single bundle distribution 1.3.0
>> ZooKeeper 3.4.3
>> java version "1.6.0_29"
>> Mac OS X 10.7.3
>>
>> Regards,
>> Glyn
>> PS. I am about to go off for Easter, so I apologise in advance for not being able to handle any response before Tuesday.
>>
>
> Enjoy :-)
> FYI, ideally a patch would be provided to get a speedy resolution to this issue, the reported issues will be reviewed and as many as realistically possible will be resolved in time for the next release, but having a patch submitted is definitely the fastest way to get it resolved :-)
>
> Cheers, Sergey
>
>>
>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>
> Blog: http://sberyozkin.blogspot.com
Regards,
Glyn
Re: Problem stopping CXF - NPE in ConfigurationManager.stop
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Glyn
On 05/04/12 18:39, Glyn Normington wrote:
> I thought I'd try running CXF distributed OSGi on Eclipse Virgo and got it working painlessly, so thanks for some nice documentation!
>
> However, I did notice an issue with the greeter demo. If I stop (or even uninstall) the greeter impl, the remote service is still remotely invokable. I guess the service object is cached inside CXF, but can someone confirm this is working as designed?
Indirectly yes, when the endpoint is created,
>
> But when I stopped the CXF bundle, the remote service was again still invokable, so it seems that the CXF stop doesn't cleanly terminate the underlying Jetty instance. Perhaps this is due to a NPE I observed:
>
This should've caused a CXF server stopping AFAIK
> Daemon Thread [Thread-34] (Suspended (exception NullPointerException))
> ConfigurationManager.stop(BundleContext) line: 267
> AggregatedActivator.stopEmbeddedActivators(BundleContext) line: 137
> AggregatedActivator.stop(BundleContext) line: 51
> BundleContextImpl$2.run() line: 771
> AccessController.doPrivileged(PrivilegedExceptionAction<T>) line: not available [native method]
> BundleContextImpl.stop() line: 764
> BundleHost.stopWorker(int) line: 510
> BundleHost(AbstractBundle).stop(int) line: 464
> Basic.stop(boolean, Bundle[]) line: 817
> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> Method.invoke(Object, Object...) line: 597
> Reflective.method(CommandSession, Object, String, List<Object>) line: 136
> CommandProxy.execute(CommandSession, List<Object>) line: 82
> Closure.executeCmd(String, List<Object>) line: 469
> Closure.executeStatement(List<Token>) line: 395
> Pipe.run() line: 108
> Closure.execute(List<Object>) line: 183
> Closure.execute(CommandSession, List<Object>) line: 120
> CommandSessionImpl.execute(CharSequence) line: 89
> Console.run() line: 62
> Shell.console(CommandSession) line: 203
> Shell.gosh(CommandSession, String[]) line: 128
> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
> NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
> Method.invoke(Object, Object...) line: 597
> Reflective.method(CommandSession, Object, String, List<Object>) line: 136
> CommandProxy.execute(CommandSession, List<Object>) line: 82
> Closure.executeCmd(String, List<Object>) line: 469
> Closure.executeStatement(List<Token>) line: 395
> Pipe.run() line: 108
> Closure.execute(List<Object>) line: 183
> Closure.execute(CommandSession, List<Object>) line: 120
> CommandSessionImpl.execute(CharSequence) line: 89
> TelnetConnection.run() line: 94
>
> Should I raise a bug on this NPE?
Please do
> Any ideas whether this really is the cause of the remote service continuing to run after CXF is stopped?
Not really :-)
>
> Environment:
> CXF single bundle distribution 1.3.0
> ZooKeeper 3.4.3
> java version "1.6.0_29"
> Mac OS X 10.7.3
>
> Regards,
> Glyn
> PS. I am about to go off for Easter, so I apologise in advance for not being able to handle any response before Tuesday.
>
Enjoy :-)
FYI, ideally a patch would be provided to get a speedy resolution to
this issue, the reported issues will be reviewed and as many as
realistically possible will be resolved in time for the next release,
but having a patch submitted is definitely the fastest way to get it
resolved :-)
Cheers, Sergey
>
--
Sergey Beryozkin
Talend Community Coders
http://coders.talend.com/
Blog: http://sberyozkin.blogspot.com